64 ビット マシンで 32 ビット モードで exe を実行するにはどうすればよいですか?

64 ビット マシンで 32 ビット モードで exe を実行するにはどうすればよいですか?

32 ビット Windows で実行すると正常に動作するが、64 ビット Windows で実行すると動作しなくなる実行ファイルがあります。

64 ビット マシンで 32 ビット モードで強制的に実行する方法はありますか?

ソースコードにアクセスできません。

答え1

どの程度技術的な回答がほしいですか? いくつかの SDK ツールを使用して、exe を常に 32 ビットで実行するように強制することはおそらく可能ですが、少し作業が必要です。

簡単な答えは、32 ビット プロセスから起動することです (例:%SystemRoot%\SYSWOW64\cmd.exe起動するには を使用します)。

もっと複雑なのは、それがどのような種類の exe であるかを確認し、自分で変更することです。ここでの背景は、Windows API と直接連携する言語からコンパイルされたコードは、開発者によってコンパイル時に 32 ビットまたは 64 ビットとして作成されることを理解することです。その後、ソース コードに戻らない限り、これを変更することはできません。

しかし、ますます多くのアプリケーションが仮想化レイヤーを介して書かれるようになり、アプリケーションの作成が容易になっています。一般的なものは .NET と Java の 2 つです。Java についてはよくわかりませんが、適切な Java ランタイムのインストールを強制すると問題が解決することはわかっています。

.NET の場合、SDK ツールを使用して次のことが可能になります。

  • アプリケーションが「AnyCPU」であることを確認します。.NET corflags myExe.exeSDK のユーティリティを使用して .NET アセンブリのヘッダーを読み取ると、exe の場合は次のような結果が返されます。
バージョン: v4.0.30319
CLR ヘッダー: 2.5
PE32 : PE32
相関フラグ: 0x20003
アイロンリー:1
32ビット要求: 0
32ビット参照: 1
署名: 0

32BITREQこれはAnyCPU32 ビットが必要ないからだと言われています。

  • オプションを使用しcorflags/32BITREQ+、exe を 32 ビットのみに変更します。

答え2

Windows 7 Professional(またはそれ以上)をお持ちの場合は、マイクロソフト

これは32ビット環境をエミュレート(?)し、古い16ビットプログラムを実行するのに役立つことが証明されています。

答え3

すべて試しましたが、何も機能しませんでした。しかし、gta iv ディレクトリを C/program files(x86) から C/program files に移動することを考えました。x86 は 32 ビット アプリ用なので (そう思います)、とにかく機能しました。

答え4

実際には、これに対応するより簡単な方法があります (長期的な解決策ではありません)。

アプリケーション「corflags.exe」を \windows\system32 フォルダにドロップします。管理者としてコマンド ラインを開き、次のように入力します...

corflags "exe のパスと名前" /32BITPREF32+

これにより、アプリケーションは 64 ビットではなく 32 ビット プロセスとして実行されるようになります。

関連情報