C#System.Diagnostics.Process:无法在64位操作系统中启动32位exe文件

我有一个使用Turbo Pascal编译的32位exe文件。 我需要启动它。 当我使用Windows 7 32位时它运行良好,但现在我使用的是Windows 7 64位,我得到以下exception:

指定的可执行文件不是此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位应用程序无法启动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位环境。