5

私が作成し、ml.exeを使用してx86用にアセンブルした一部のプログラムは、Win7x64で正常に動作することを確認しました。これはWowテクノロジーのおかげだと思います。

ただし、実行されないプログラム(私が作成したものではない)がいくつかあります。次のようなエラーが発生します。 このファイルのバージョンは、実行しているWindowsのバージョンと互換性がありません。コンピュータシステム情報をチェックして、プログラムのx86(32ビット)バージョンまたはx64(64ビット)バージョンが必要かどうかを確認してから、ソフトウェア発行元に連絡してください。

これらのプログラムのEXEを変更して、Win7x64で実行できるようにする方法はありますか。透過的に実行される他のプログラムとの違いをもたらすこれらのプログラムの根本的な違いは何ですか。

4

2 に答える 2

6

それらは実際には8ビットまたは16ビットのプログラムです。Windows x64は、このようなプログラムに必要な仮想8086モードをサポートしないロングモードで実行されます。ソースから再コンパイルするか、仮想マシンで実行する以外に、それらを機能させる方法はありません。

于 2010-11-29T11:36:47.433 に答える
0

1つの理由は、.NETとネイティブライブラリの組み合わせである可能性があります。.NETライブラリは実行時にx64としてコンパイルされ(明示的にx86を指定しない場合)、ネイティブライブラリはx86モードで実行されます。一緒に実行することはできません。

もう1つの理由は、レジストリへのアクセスです。使用するAPIによっては、wow64モードのx86appをレジストリの別の部分に転送できます。レジストリアクセスAPIに一貫性がない場合、問題が発生する可能性があります。

于 2013-03-15T06:54:27.660 に答える