Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从32位代码在System32中运行64位可执行文件_C#_Windows_Syswow64 - Fatal编程技术网

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

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

我试图从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.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根据建议使用,因此它毕竟没有那么快!我相信你应该把这个评论作为一个答案。