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.exe
SDK のユーティリティを使用して .NET アセンブリのヘッダーを読み取ると、exe の場合は次のような結果が返されます。
バージョン: v4.0.30319 CLR ヘッダー: 2.5 PE32 : PE32 相関フラグ: 0x20003 アイロンリー:1 32ビット要求: 0 32ビット参照: 1 署名: 0
32BITREQ
これはAnyCPU
32 ビットが必要ないからだと言われています。
- オプションを使用し
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 ビット プロセスとして実行されるようになります。