web-dev-qa-db-ja.com

32ビットモードのバッチファイルから64ビットモードのバッチファイルを実行する方法

プログラムを32ビットOSの場合は32ビットモードで実行し、64ビットOSの場合は64ビットモードで実行したいと思います。そのプログラムはBat To Exe Converter v2.1.4で作成されているので、基本的にはバッチファイルです。通常、バッチファイルを32ビットOSで実行すると、32ビットモードで実行され、64ビットOSで実行すると、64ビットモードで実行されますね。問題は、Bat To Exe Converter v2.1.4を使用することです。プログラムが32ビットか64ビットかを選択できます。したがって、32を選択する必要があります。そうしないと、32ビットOSでは実行されないと思います。 .vbsファイルを使用して、。Runおよび。ShellExecuteを使用してプログラムを再起動しようとしましたが、結果として、コンバーターで設定されたものと同じアーキテクチャーになりました。私も試しましたcmd /cおよび%WINDIR%\System32\cmd.exe /cそしてまた%WINDIR%\SysWOW64\cmd.exe /cしかし、私はそれを行う方法を見つけることができませんでした。私はWindows8.0 x64を使用しており、VMはWindows8.1x64です。

6
SkYWAGz
c:\windows\sysnative

32ビットプログラムのSystem32へのアクセスを提供します。

32ビット

C:\Windows\System32 accesses syswow64
c:\windows\sysnative accesses System32

64ビットは指示されたとおりに動作します。フォルダに直接アクセスします。たとえば、C:\ windows\system32はSystem32にアクセスし、C:\ windows\syswow64はSyswow64にアクセスします。

重要なのは、32ビットプログラムのみを作成する必要があるということです。 64ビットプログラムのほとんどは内部で32ビットです(メモリアドレスのみが64ビットで、その他はすべて32ビットのままです)。 64ビットはサーバーアプリ用です。一般的なプログラムには32ビットを使用します。

[〜#〜]編集[〜#〜]

32ビットプログラムは32ビットで64ビットアドレッシングモードで、32ビット(Windowsではベースアドレスは常に0)は使用されないため、メモリアドレスに必要なのは32ビット(オフセット)のみです。

64ビットプログラムは32ビットで64ビットオフセットメモリアドレスを備えています(64ビットモードのベースアドレスのサイズは常に0であり、何十年も関係がないためわかりません)。 64ビットプログラムは、一般に科学的またはビデオ処理タスクのために、選択時に64ビット命令を使用するだけで、完全な64ビットプログラムになることができます。しかし、64ビットのすべてがメモリを大量に消費し、Windowsやその他のライブラリは32ビットの値を期待しています。

一般的な原則は、タスクを達成するために何もする必要がないということです。 32ビット/ 64ビットについて考え始めると、人々は困ります。ビットネスを無視すると、Microsoftはそれを正しく機能させるためにすべての作業を投入しました。

Start-Run(Winkey + R)ダイアログでiexpressと入力すると、独自のbat2exeを作成できます。

3
user4285084