C#进程-找不到“ MultiDigiMon” exe实用程序

时间:2018-10-09 16:02:59

标签: c# .net windows process touch

我正在尝试启动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

1 个答案:

答案 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");