如何在 64 位元機器上以 32 位元模式運行 exe?

如何在 64 位元機器上以 32 位元模式運行 exe?

我有一個可執行文件,在 32 位元 Windows 上運行時可以正常工作,但在 64 位元 Windows 上運行時會中斷。

有辦法強制它在 64 位元機器上以 32 位元模式運作嗎?

我無權存取原始碼。

答案1

您想要多技術性的答案?您可能可以使用一些 SDK 工具強制 exe 始終運行 32 位,但這確實需要一些工作。

簡單的答案是從 32 位元進程啟動(例如,使用%SystemRoot%\SYSWOW64\cmd.exe啟動)。

比較複雜的是檢查它是什麼類型的exe,然後自己修改。這裡的背景是要了解直接使用 Windows API 的語言的編譯程式碼是由開發人員在編譯時創建為 32 位元或 64 位元的。如果不返回原始程式碼,就無法變更此設定。

然而,越來越多的應用程式是透過虛擬化層編寫的,這使得編寫應用程式變得更加容易。有兩種常見的:.NET 和 Java。我對 Java 不太確定,只是知道強制安裝正確的 Java 運行時可以解決問題。

對於 .NET,您可以使用 SDK 工具:

  • 驗證應用程式是“AnyCPU”:corflags myExe.exe。使用 .NET SDK 中的實用程式讀取 .NET 組件的標頭,對於 exe 將傳回類似以下內容:
版本:v4.0.30319
CLR 標頭:2.5
聚乙烯:PE32
CorFlags:0x20003
僅:1
32位元TREQ:0
32位參考:1
簽名:0

告訴32BITREQ我這是AnyCPU因為不需要 32 位元。

  • corflags與其選項一起使用/32BITREQ+,將 exe 修改為僅 32 位元。

答案2

如果您有 Windows 7 Professional(或更高版本),請使用虛擬 XP 模式微軟

這模擬了(?)32 位元環境,事實證明它對於運行一些舊的 16 位元程式很有用

答案3

嘗試了一切,但沒有任何效果。但後來考慮將 gta iv 目錄從 C/程式文件(x86)移動到 C/程式文件,它可以工作,因為 x86 適用於 32 位元應用程式(我認為),但無論如何都可以工作。

答案4

實際上有一種更簡單的方法來適應這種情況(不是長期解決方案)。

將應用程式「corflags.exe」放入 \windows\system32 資料夾中。以管理員身份開啟命令列並輸入...

corflags“exe 的路徑和名稱”/32BITPREF32+

這將強制應用程式作為 32 位元進程而不是 64 位元進程運行。

相關內容