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


18

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

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

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


これはあまり意味がありません。ソフトウェアに、64ビットマシンで実行しないと明示的に失敗するコードがない限り。32ビットは64ビットで正常に動作しますが、逆の問題が発生します(32ビットで64ビットを実行)。エラーメッセージが表示されますか?
デイブ

3
このコードはあなたが書いたものですか(この場合、スタックオーバーフローは、コードとエラーメッセージとともに尋ねる場所です)、それともあなたが実行している他の誰かのプログラムですか?表示されているエラーメッセージを含めると役立ちます。
ChrisF

回答:


16

どのくらい技術的な答えが欲しいですか?おそらく、いくつかのSDKツールを使用して32ビットを実行するようにexeを強制できますが、少しの作業が必要です。

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

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

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

.NETの場合、SDKツールを使用して次のことができます。

  • アプリケーションが「AnyCPU」であることを検証します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これは私に語ったAnyCPU32ビットが必要とされていないため。

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

+1 .Net AnyCPU設定は最初に考えたものでした。気付かないプログラマーがこの設定を適切に指定しないだけで十分です。それがコンパイルされた後にそれを修正する方法があると聞いて素晴らしいです。
Hand-E-Food

2
私はからそれを起動しようとした%SystemRoot%\SYSWOW64\cmd.exeし、それは同じように失敗しました-エラーメッセージを示す-と私はタスクマネージャで確認したときに私のexeファイルプロセスが32ビットプロセスとして表示されません
ロリー・

1
Daveが上記で尋ねたように、正確なエラーメッセージはですか?
カラン

5
管理対象のAnyCPU EXEを起動SYSWOW64\cmd.exeすると、64ビットプロセスとして実行されます(試したばかりです)。
カールウォルシュ

3

Windows 7 Professional(またはそれ以上)を使用している場合は、Microsoftの仮想XPモードを使用します

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


0

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


0

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.