使用c#运行命令行不起作用

时间:2013-12-20 12:25:53

标签: c# .net command-line

我有以下运行命令行的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();

它在一台计算机上运行良好,但在不同的计算机上运行时没有任何反应。

当试图通过有问题的计算机上的命令行运行它时 - 它也可以正常工作。

所有路径都是正确的,我是以管理员权限运行的。

可能出现什么问题?也许一些环境变量?或计算机的安全问题?

2 个答案:

答案 0 :(得分:1)

当从命令行运行时,我会说您的应用程序快捷方式正在运行具有不同工作目录的程序(因此相对路径Lib\my_program.exe无法解析为现有程序)。 / p>

更一般地说,Process.Start()可以抛出各种异常(在这种情况下可能是FileNotFoundException)所以我建议你用try / catch块包装代码并将异常写入Console.Error或显示错误对话框。

答案 1 :(得分:0)

检查ProcessStartInfo.EnvironmentVariable [" Path"]。如果这没有" my_program.exe"的父文件夹。然后可能它不知道位置。请记住,这里"路径"区分大小写。谢谢我的老人今天对此表示怀疑。