C# 从32位代码在System32中运行64位可执行文件
我试图从32位C#app(在64位操作系统上)运行可执行文件,但我得到“系统找不到指定的文件”,可能是因为C:\Windows\SySWOW64中不存在wsqmcons.exe。该文件确实存在于System32中。如果可能,从代码运行wsqmcons.exe的最佳方式是什么C# 从32位代码在System32中运行64位可执行文件,c#,windows,syswow64,C#,Windows,Syswow64,我试图从32位C#app(在64位操作系统上)运行可执行文件,但我得到“系统找不到指定的文件”,可能是因为C:\Windows\SySWOW64中不存在wsqmcons.exe。该文件确实存在于System32中。如果可能,从代码运行wsqmcons.exe的最佳方式是什么 Process p = new Process(); p.StartInfo.Arguments = "-f"; p.StartInfo.FileName = @"C:\Windows\System32\wsqmcons.e
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);
您需要使用Wow64DisableWow64FsRedirection关闭32位进程上的文件系统重定向,并使用Wow64RevertWow64FsRedirection重新启用它 无法删除位于%windir%\System32下的64位可执行文件 从32位进程启动,因为文件系统重定向程序 将路径重定向到%windir%\SysWOW64不要禁用重定向到 完成这一点;改用%windir%\Sysnative。欲了解更多信息, 看
引用自有关快速修复,请尝试将路径更改为:
@“C:\Windows\Sysnative\wsqmcons.exe”
。有关更多面向Win32 API的详细信息/指针,请参阅,但在.NET中可能也会有所帮助。@Michael根据建议使用,因此它毕竟没有那么快!我相信你应该把这个评论作为一个答案。