Процессы в C # - не удается найти утилиту "MultiDigiMon" - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь запустить утилиту MultiDigiMon (несколько цифровых мониторов) как часть схемы автоматической калибровки.

Я могу запустить ее вручную, запустив «multidigimon -touch» (примечание: если вы неУ него нет сенсорных устройств, которые он не запустит, но файл все еще находится в папке system32).Я могу просто запустить утилиту cmd.exe.

Вот как я пытаюсь это сделать:

        ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\System32\MultiDigiMon.exe", "-touch");
        Process.Start(info);

Это просто не получится, за исключением (при запуске):

Unhandled Exception: System.ComponentModel.Win32Exception: The system cannot find the file specified
   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at CommandLineTest.Program.Main(String[] args) in C:\Users\-\Program.cs:line 20

Как ни странно, если вы запустите его с помощью отладки или выпуска, он не выдаст исключение времени выполнения, просто не откроет утилиту.

Привилегии администратора не делаютразница.64-битная Windows 10.

Я пробовал:

Process.Start в C # Системе не удается найти указанную ошибку файла

Ошибка в Process.Start () - система не может найти указанный файл

1 Ответ

0 голосов
/ 09 октября 2018

Обновление

Итак, я провел некоторое тестирование, и причина, по которой вы получаете сообщение об ошибке «не могу найти файл», заключается в том, что при запуске «без повышенных прав» он не может найти файл.Я все еще не уверен, почему вы не можете запустить его с повышенными правами, но я смог запустить его, используя код ниже.Мой конфиг установлен как «Any-CPU».

ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\Sysnative\MultiDigiMon.exe", "-touch");
info.WorkingDirectory = @"C:\Windows\Sysnative\";
info.UseShellExecute = true;
Process.Start(info);

Оригинал

Вы пробовали ответ в первом ссылочном посте?

ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\sysnative\MultiDigiMon.exe", "-touch");
...