Запуск 64-битного исполняемого файла в System32 из 32-битного кода - PullRequest
1 голос
/ 01 октября 2011

Я пытаюсь запустить исполняемый файл из 32-разрядного приложения C # (в 64-разрядной ОС), но получаю сообщение «Система не может найти указанный файл», вероятно, из-за того, что wsqmcons.exe не существует в C : \ 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 ]

1 голос
/ 14 февраля 2014

64-разрядный исполняемый файл, расположенный в % windir% \ System32 , не может быть запущен из 32-битного процесса, потому что перенаправитель файловой системы перенаправляет путь к % windir% \ SysWOW64 . Не отключать перенаправление на выполнить это ; используйте взамен % windir% \ Sysnative . Для дополнительной информации, см. Перенаправитель файловой системы .

Цитата от http://msdn.microsoft.com/en-us/library/windows/desktop/aa384203%28v=vs.85%29.aspx

1 голос
/ 01 октября 2011

Вам потребуется отключить перенаправление файловой системы в 32-разрядном процессе с помощью Wow64DisableWow64FsRedirection и повторно включить его с помощью Wow64RevertWow64FsRedirection.

...