32ビットウィンドウで実行すると正常に動作するが、64ビットウィンドウで実行すると壊れる実行可能ファイルがあります。
64ビットマシンで32ビットモードで強制的に実行する方法はありますか?
ソースコードにアクセスできません。
32ビットウィンドウで実行すると正常に動作するが、64ビットウィンドウで実行すると壊れる実行可能ファイルがあります。
64ビットマシンで32ビットモードで強制的に実行する方法はありますか?
ソースコードにアクセスできません。
回答:
どのくらい技術的な答えが欲しいですか?おそらく、いくつかのSDKツールを使用して32ビットを実行するようにexeを強制できますが、少しの作業が必要です。
簡単な答えは、32ビットプロセス%SystemRoot%\SYSWOW64\cmd.exe
から起動することです(起動に使用するなど)。
より複雑なのは、exeの種類を確認してから、自分で変更することです。ここでの背景は、Windows APIで直接動作する言語からコンパイルされたコードが、開発者によってコンパイル時に32ビットまたは64ビットとして作成されることを理解することです。これは、ソースコードに戻らない限り変更できません。
ただし、アプリケーションの作成を容易にする仮想化レイヤーを介してアプリケーションが作成されるケースが増えています。2つの一般的なものがあります:.NETとJava。適切なJavaランタイムを強制的にインストールして問題を解決することを知っている以外は、Javaについてはわかりません。
.NETの場合、SDKツールを使用して次のことができます。
corflags myExe.exe
。.NET SDKのユーティリティを使用して.NETアセンブリのヘッダーを読み取ると、exeは次のような結果を返します。バージョン:v4.0.30319 CLRヘッダー:2.5 PE:PE32 CorFlags:0x20003 ILONLY:1 32BITREQ:0 32BITPREF:1 署名済み:0
32BITREQ
これは私に語ったAnyCPU
32ビットが必要とされていないため。
corflags
この/32BITREQ+
オプションを使用して、exeを32ビットのみに変更します。%SystemRoot%\SYSWOW64\cmd.exe
し、それは同じように失敗しました-エラーメッセージを示す-と私はタスクマネージャで確認したときに私のexeファイルプロセスが32ビットプロセスとして表示されません
SYSWOW64\cmd.exe
すると、64ビットプロセスとして実行されます(試したばかりです)。
Windows 7 Professional(またはそれ以上)を使用している場合は、Microsoftの仮想XPモードを使用します
これは32ビット環境をエミュレート(?)し、いくつかの古い16ビットプログラムを実行するのに役立つことが証明されています。