我需要停止然后重新启动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();
答案 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)
同时RedirectStandardOutput
将RedirectStandardError
设置为true
process.startInfo.RedirectStandardOutput = true;
process.startInfo.RedirectStandardError = true;
同时确保UseShellExecute
必须设置为false
,否则设置CreateNoWindow = true
没有意义。