我有以下运行命令行的C#代码:
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = @"Lib\my_program.exe";
si.WindowStyle = ProcessWindowStyle.Hidden;
si.UseShellExecute = false;
si.CreateNoWindow = true;
si.Arguments = "my args";
Process p = new Process();
p.StartInfo = si;
p.Start();
它在一台计算机上运行良好,但在不同的计算机上运行时没有任何反应。
当试图通过有问题的计算机上的命令行运行它时 - 它也可以正常工作。
所有路径都是正确的,我是以管理员权限运行的。
可能出现什么问题?也许一些环境变量?或计算机的安全问题?
答案 0 :(得分:1)
当从命令行运行时,我会说您的应用程序快捷方式正在运行具有不同工作目录的程序(因此相对路径Lib\my_program.exe
无法解析为现有程序)。 / p>
更一般地说,Process.Start()
可以抛出各种异常(在这种情况下可能是FileNotFoundException
)所以我建议你用try / catch块包装代码并将异常写入Console.Error
或显示错误对话框。
答案 1 :(得分:0)
检查ProcessStartInfo.EnvironmentVariable [" Path"]。如果这没有" my_program.exe"的父文件夹。然后可能它不知道位置。请记住,这里"路径"区分大小写。谢谢我的老人今天对此表示怀疑。