簡體   English   中英

C#System.Diagnostics.Process:無法在64位操作系統中啟動32位exe文件

[英]C# System.Diagnostics.Process: can't launch a 32 bit exe file in 64 bit OS

我有一個用Turbo Pascal編譯的32位exe文件。 我需要啟動它。 當我使用Windows 7 32位時它運行良好,但現在我在Windows 7 64位上,我得到以下異常:

指定的可執行文件不是此OS平台的有效應用程序。

為了確保它在32位系統上運行,我在32位平台上啟動了C#程序 - 它可以工作。

那么如何在64位操作系統中啟動32位exe文件?

謝謝

Turbo Pascal只能生成16位代碼,從來沒有一個版本可以創建32位可執行文件。 運行16位代碼需要使用CPU中的實模式仿真支持的虛擬機( 虛擬8086模式 )。 如果處理器以64位模式運行,則此仿真不可用。

您無法在64位操作系統上運行16位進程。 您可能有機會使用DOSBox模擬器

如果從.NET(C#)應用程序中啟動32位exe,則需要將.NET應用程序的目標設置為x86。 如果它被設置為任何CPU,那么它將在64位操作系統上作為64位進程運行,因此將無法啟動32位進程。

編輯:此MSDN文章介紹了如何修改此設置: http//msdn.microsoft.com/en-us/library/5b4eyb0k.aspx

編輯2:正如Gabe指出的那樣,64位app無法啟動32位exe的原因應該沒有。 我知道你不能在64位應用程序中使用32位DLL。 只是認為值得嘗試,因為文檔沒有指定在使用System.Diagnostics.Process啟動exe時是否存在相同的限制。

您可以從64位應用程序啟動32位應用程序。

C#示例1:

var processStartInfo = new ProcessStartInfo("C:\MyApp.exe");
var process = new Process { StartInfo = processStartInfo };
process.Start();
process.WaitForExit();

C#示例2:

System.Diagnostics.Process.Start("C:\MyApp.exe");

我不認為Turbo Pascal有64位編譯器所以我認為你唯一的選擇就是編譯你的應用程序,目標是32位環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM