为什么要Process.Start(“cmd.exe”,进程);不行?

时间:2012-12-24 10:30:42

标签: c# .net command-line

这有效:

Process.Start("control", "/name Microsoft.DevicesAndPrinters");

但这不是:(它只是打开一个命令提示符。)

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "control /name Microsoft.DevicesAndPrinters";
Process.Start(info);

为什么?

(是的,我知道它们不相同。但第二个“应该”有效。)

3 个答案:

答案 0 :(得分:35)

这是因为cmd.exe期望/K开关执行作为参数传递的进程。请尝试以下代码

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "/K control /name Microsoft.DevicesAndPrinters";
Process.Start(info);

编辑:已更改为/K以上。如果希望/C在运行命令后关闭,则可以使用cmd.exe开关。

答案 1 :(得分:7)

您需要/c/k开关(cmd.exe选项),以便执行命令。尝试:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "/c control /name Microsoft.DevicesAndPrinters";
Process.Start(info);

答案 2 :(得分:1)

试试这个

ProcessStartInfo info = new ProcessStartInfo("control");
info.Arguments = "/name Microsoft.DevicesAndPrinters";
Process.Start(info);