我正在尝试启动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 in C# The system cannot find the file specified error
Error in Process.Start() -- The system cannot find the file specified
答案 0 :(得分:1)
因此,我进行了一些测试,出现错误“找不到文件”的原因是因为在“未提升”运行时找不到文件。我仍然不确定为什么您不能以提升的方式运行它,但是我能够使用下面的代码运行它。我的配置设置为“任何CPU”。
ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\Sysnative\MultiDigiMon.exe", "-touch");
info.WorkingDirectory = @"C:\Windows\Sysnative\";
info.UseShellExecute = true;
Process.Start(info);
您是否在第一篇被引用的帖子上尝试过the answer?
ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\sysnative\MultiDigiMon.exe", "-touch");