【问题标题】:How to launch an external process in C#, using a cmd window如何在 C# 中使用 cmd 窗口启动外部进程
【发布时间】:2011-07-17 11:07:36
【问题描述】:

我在使用 Process.Start 执行外部控制台应用程序时遇到问题

Process p = new Process();
p.StartInfo.WorkingDirectory = "dump";
p.StartInfo.FileName = "test.exe";
p.StartInfo.Arguments = s;
p.Start();

当 p 生成的参数执行时,外部应用程序崩溃,尽管如果我在命令行窗口中复制完全相同的参数,它运行正常。

所以我的问题是如何创建命令窗口的新实例,然后添加命令 test.exe + s 运行?

如此有效地我启动了 cmd,然后将我的参数添加到它上面

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    如果您想通过 cmd 运行 test.exe prm1 prm2,请使用 cmd.exe /c test.exe prm1 prm2。虽然我真的不明白这与崩溃有什么关系。听起来您的问题出在 test.exe - 找出导致它崩溃的原因,这将帮助您修复 C# 代码,这样您就不需要 cmd。

    我要检查的地方之一是工作目录。当您将其设置为“转储”时,您确定当前目录是您所期望的吗?首先尝试使用完整路径。 test.exe 可能恰好在系统路径中,所以它被执行,但它的工作目录不是它所期望的,这会导致它崩溃。

    【讨论】:

      【解决方案2】:

      试试这个:

      ProcessStartInfo processToRunInfo = new ProcessStartInfo();    
      processToRunInfo.Arguments = "Arguments");
      processToRunInfo.CreateNoWindow = true;
      processToRunInfo.WorkingDirectory = "C:\\yourDir\\";
      processToRunInfo.FileName = "test.exe";
      //processToRunInfo.CreateNoWindow = true;
      //processToRunInfo.WindowStyle = ProcessWindowStyle.Hidden;
      Process process = new Process();
      process.StartInfo = processToRunInfo;
      process.Start();
      

      【讨论】:

        【解决方案3】:
        Process p = new Process();
        p.StartInfo.WorkingDirectory = "/full/path/to/dump";
        p.StartInfo.FileName = "/full/path/to/test.exe";
        p.StartInfo.Arguments = s; // will call 'text.exe s'
        p.Start();
        

        【讨论】:

          【解决方案4】:

          看看MSDN。

          您需要创建 StartInfo 类和用户 Start() 的实例,例如

          ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
          startInfo.WindowStyle = ProcessWindowStyle.Minimized;
          Process.Start(startInfo);
          startInfo.Arguments = "www.example.com";
          Process.Start(startInfo);
          

          试试吧!

          重写你的代码看起来像这样:

          ProcessStartInfo startInfo = new ProcessStartInfo("test.exe");
          startInfo.WindowStyle = ProcessWindowStyle.Minimized;
          startInfo.WorkingDirectory = "dump";
          startInfo.Arguments = "s";
          Process.Start(startInfo);
          

          【讨论】:

            猜你喜欢
            • 2017-12-09
            • 1970-01-01
            • 2013-03-05
            • 2014-05-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-04
            • 1970-01-01
            相关资源
            最近更新 更多