2012-09-27 09:21:43 +0000 2012-09-27 09:21:43 +0000
18
18

64ビットマシンで32ビットモードでexeを実行する方法を教えてください。

32ビットウィンドウで実行すると正常に動作しますが、64ビットウィンドウで実行すると壊れてしまう実行ファイルがあります。

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

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

回答 (4)

16
16
16
2012-09-27 09:49:02 +0000

どのくらい技術的な答えが必要なのでしょうか?いくつかのSDKツールを使用してexeを常に32bitで実行するように強制することができますが、少し手間がかかります。

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

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

しかし、最近ではアプリケーションの記述を容易にする仮想化レイヤーを介してアプリケーションが記述されるようになってきています。一般的なものとしては、.NETとJavaの2つがあります。Javaについては、正しいJavaランタイムを強制的にインストールすることで問題が解決することを知っている以外はよくわかりません。

.NETの場合、SDKツールを使って以下のことができます。

  • アプリケーションが “AnyCPU "であることを確認する。corflags myExe.exe. .NET SDKのユーティリティを使用してexeの.NETアセンブリのヘッダを読み取ると、以下のような内容が返されます。
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0

32bitは必要ないので、32BITREQはこれがAnyCPUであることを教えてくれます。

  • exeを32bitのみに変更するには、corflagsとその/32BITREQ+オプションを使用してください。
3
3
3
2012-09-27 19:06:35 +0000

Windows 7 professional (またはそれ以上)をお使いの場合、 Microsoft

の仮想XPモードを使用して、32ビット環境をエミュレート(?)しています。

0
0
0
2018-11-29 21:07:43 +0000

実はもっと簡単な方法があります(長期的な解決策ではありません)。

アプリケーション “corflags.exe "を”\windowss\system32 “フォルダにドロップします。管理者としてコマンドラインを開き、次のようにタイプしてください。

corflags "path and name of the exe” /32BITPREF32+

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

0
0
0
2014-04-07 14:48:39 +0000

しかし、その後、C/プログラムファイル(x86)からC/プログラムファイルにgta ivディレクトリを移動することを考えたが、x86は32bitアプリのためのものだと思うので、それは動作しますが、とにかく動作しました。

関連する質問

3
19
10
28
2