cmd命令不能在C#

时间:2015-11-02 11:10:47

标签: c# cmd

我想在Windows中使用C#运行cmd命令进行安装服务,我使用下面的代码:

class Program
{
    static void Main(string[] args)
    {
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.CreateNoWindow = false;
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments =
            "\"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\installutil.exe\" \"D:\\Projects\\MyNewService\\bin\\Release\\MyNewService.exe\"";
        process.StartInfo = startInfo;
        process.Start();

    }
}

但是这个程序不起作用。如果我在cmd.exe中运行此命令正常工作,但是当我运行此项目时,不执行命令并且 MyNewService.exe 不安装。

我的问题在哪里? 你帮我吗?

1 个答案:

答案 0 :(得分:3)

不是启动cmd.exe并将installutil作为参数传递(然后将您的服务执行文件作为参数的参数),请尝试直接将MyNewService.exe作为参数启动installutil.exe可执行文件。

您应该始终等待进程退出,并且应该始终检查进程的退出代码,如下所示。

static void Main(string[] args)
{

    System.Diagnostics.Process process = new System.Diagnostics.Process();
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    startInfo.CreateNoWindow = true;
    startInfo.FileName = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\installutil.exe";
    startInfo.Arguments = "D:\\Projects\\MyNewService\\bin\\Release\\MyNewService.exe";
    process.StartInfo = startInfo;
    bool processStarted = process.Start();
    process.WaitForExit();
    int resultCode = process.ExitCode;
    if (resultCode != 0)
    {
        Console.WriteLine("The process intallutil.exe exited with code {0}", resultCode);
    }
}