控制台窗口不会隐藏

时间:2015-08-10 14:44:22

标签: c#

我需要停止然后重新启动Windows Update Service,但我希望控制台在完全显示之后关闭。我尝试了它在这里说的所有内容,但控制台窗口仍然不会消失。

  Process process = new Process();
        process.StartInfo.FileName = "cmd";
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.Arguments = "/C start \"wuauserv\"";
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        process.Start();
        process.WaitForExit();

2 个答案:

答案 0 :(得分:3)

我会建议代替您的How to stop/Start windows services

  

开始服务

     

以下方法尝试启动服务名称指定的服务。然后它等待服务运行或超时   发生。

public static void StartService(string serviceName, int timeoutMilliseconds)
{
  ServiceController service = new ServiceController(serviceName);
  try
  {
    TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

    service.Start();
    service.WaitForStatus(ServiceControllerStatus.Running, timeout);
  }
  catch
  {
    // ...
  }
}
     

停止服务

     

以下方法尝试停止指定的服务,并等待服务停止或发生超时。

public static void StopService(string serviceName, int timeoutMilliseconds)
{
  ServiceController service = new ServiceController(serviceName);
  try
  {
    TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

    service.Stop();
    service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
  }
  catch
  {
    // ...
  }
}

然后,您可以在不显示任何控制台窗口的情况下控制服务

答案 1 :(得分:0)

同时RedirectStandardOutputRedirectStandardError设置为true

process.startInfo.RedirectStandardOutput = true;
process.startInfo.RedirectStandardError = true;

同时确保UseShellExecute必须设置为false,否则设置CreateNoWindow = true没有意义。