web-dev-qa-db-ja.com

Wineを使用したWin64での16ビットウィンドウ?

Win64で16ビットアプリケーションを実行するために次のアプローチを試した人はいないでしょうか。

VMware仮想マシンをインストールし、Linuxをロードし、Wineを使用して古いWindows環境をシミュレートできます。なぜそれが機能するのかわかりません機能しませんですが、Win64上の16ビットWindowsに関する以前の質問からの情報は見つかりません。

8
Charlie

64ビットWindowsにはWOWは含まれていませんが、ウィキペディアによると、64ビットWineには含まれています。

出典: http://en.wikipedia.org/wiki/Wine_(software)#Backward_compatibility

http://en.wikipedia.org/wiki/File:Wineon64bit.png

新しいバージョンのWindowsでは、ユーザーがレガシーWindowsアプリケーションをアップグレードする必要があるため、Wineの下位互換性はWindowsよりも優れています。多くの場合、Wineは、「互換モード」を備えた新しいバージョンのWindowsよりも優れたレガシーサポートを提供できます。左のスクリーンショットに示されているように、Wineはx86-64(64ビット)CPUを使用する64ビットオペレーティングシステムで16ビットWindowsプログラムを実行できます。 64ビットバージョンのMicrosoftWindowsは、16ビットWindowsプログラムを実行できません。

出典: http://en.wikipedia.org/wiki/Windows_on_Windows

Win16サブシステムは、32ビット版のWindows NT、2000、XP、Server 2003、Vista、Server 2008、7、および8で使用できます。ただし、64ビット版のWindowsバージョンには、WoWは含まれていません。 Win16-サブシステムをサポートしているため、Win16アプリケーションを実行することも、NTVDMエミュレータを提供することもできません。したがって、DOSおよび16ビットWindowsアプリケーションは、サードパーティのエミュレーションソフトウェア(DOSBoxなど)がない64ビットバージョンのWindows、または32ビットバージョンのWindows、Windows XPモード、またはDOS自体。

可能であれば、2つのVMを実行します。1つは32ビットWindowsで、もう1つは64ビットWindowsで、何かのために64ビットWindowsが特に必要であると想定します。

6
Mark Allen

これは、winevdmで可能になりました: https://github.com/otya128/winevdm 。 64ビットWindowsで16ビットアプリケーションを実行するには、Windows x64(16ビットコードを実行するために必要)ではローカルディスクリプタテーブル(LDT)を変更できないため、x86CPUをエミュレートする必要があります。 GitHubのリンクされたプロジェクトには、Wineとx86エミュレーターに必要なすべての変更が含まれています。私はそれをテストしました、そしてそれは非常にうまくいくようです。

最新バージョンをインストールするには、 https://ci.appveyor.com/project/otya128/winevdm に移動し、[Environment:THIS_BUILD_IS_RECOMMENDED__VCXPROJ_BUILD = 1]、[Artifacts]の順に選択します。 Zipアーカイブを解凍し、「install」を実行してレジストリキーを追加し、16ビットの実行可能ファイルがotvdmで開かれるようにします。

2
Fabian Heller