【问题标题】:Why does Process.Start("cmd.exe", process); not work?为什么 Process.Start("cmd.exe", process);不行?
【发布时间】:2012-12-24 10:30:41
【问题描述】:

这行得通:

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

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

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

为什么?

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

【问题讨论】:

  • 它对我来说很好用。你的错误是什么?
  • @SonerGönül 没有错误。正如我所写 - 它只是打开一个命令提示符。它应该打开 DevicesAndPrinters。 (你的意思是它为你那个?)

标签: c# .net command-line


【解决方案1】:

这是因为cmd.exe 需要/K 开关来执行作为参数传递的进程。试试下面的代码

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

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

【讨论】:

    【解决方案2】:

    您需要/c/k 开关(cmd.exe 的选项)才能执行命令。试试:

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

    【讨论】:

      【解决方案3】:

      试试这个

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

      【讨论】:

      • 我知道。但我特别想看看命令行的结果。
      猜你喜欢
      • 2011-06-17
      • 1970-01-01
      • 2014-05-11
      • 2021-12-12
      • 2015-04-19
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多