2010-11-29 67 views
5

我已經看到一些由我編寫並使用ml.exe爲x86編譯的程序在我的Win 7 x64上運行良好。我相信這是因爲哇技術。爲什麼某些爲x86編譯的程序不能在x64下運行,而有些則是這樣做的

但是,有一些程序(不是我寫的)不運行。他們給出的錯誤是: 此文件的版本與您正在運行的Windows版本不兼容。檢查你的計算機系統信息,看你是否需要一個x86(32位)或x64(64位)版本的程序,然後聯繫軟件出版商

有什麼辦法可以修改EXE這些程序使其在Win 7 x64上運行。這些程序的根本區別在哪裏,它與其他透明運行的程序不同。

+0

+1,我也想知道 – Jacques 2010-11-29 11:34:22

回答

6

它們實際上是8位或16位程序。 Windows x64在長時間模式下運行,不支持虛擬8086模式,這些程序需要這些模式。沒有辦法使他們無法從源代碼重新編譯它們或在虛擬機中運行它們。

+0

8位程序eh?我還沒有看過一段時間...... ;-) – 2010-11-29 11:44:58

0

一個原因可能是.NET和本地庫的結合。 .NET庫在運行時被編譯爲x64(如果您沒有明確指定x86),並且本機庫以x86模式運行。它無法運行。

另一個原因是訪問註冊表。根據使用的API,wow64模式下的x86app可以被轉發到註冊表的另一部分。如果註冊表訪問API不一致,則可能會造成問題。

相關問題