从32位代码在System32中运行64位可执行文件

时间:2011-09-30 21:30:51

标签: c# windows syswow64

我正在尝试从32位C#应用程序(在64位操作系统上)运行可执行文件,但我得到“系统无法找到指定的文件”,可能是因为C中不存在wsqmcons.exe :\ WINDOWS \ SYSWOW64。该文件确实存在于System32中。如果可能,从代码运行wsqmcons.exe的最佳方法是什么?

Process p = new Process();
p.StartInfo.Arguments = "-f";
p.StartInfo.FileName = @"C:\Windows\System32\wsqmcons.exe";
p.Start();
p.WaitForExit();
Verify.AreEqual(0, p.ExitCode);

2 个答案:

答案 0 :(得分:1)

您需要使用Wow64DisableWow64FsRedirection关闭32位进程上的文件系统重定向,并使用Wow64RevertWow64FsRedirection重新启用它。

答案 1 :(得分:1)

  

位于%windir%\ System32 下的64位可执行文件不能   从32位进程启动,因为文件系统重定向器   将路径重定向到%windir%\ SysWOW64 不要禁用重定向到    完成此 ;请改用%windir%\ Sysnative 。欲获得更多信息,   见File System Redirector

来自http://msdn.microsoft.com/en-us/library/windows/desktop/aa384203%28v=vs.85%29.aspx