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

isp*_*iro 15 .net c# command-line

这有效:

Process.Start("control", "/name Microsoft.DevicesAndPrinters");
Run Code Online (Sandbox Code Playgroud)

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

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "control /name Microsoft.DevicesAndPrinters";
Process.Start(info);
Run Code Online (Sandbox Code Playgroud)

为什么?

(是的,我知道他们不一样.但第二个"应该"有效.)

rya*_*lli 37

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

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

编辑:改为/K上面./C如果要cmd.exe在运行命令后关闭,可以使用switch .


SWe*_*eko 7

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

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