C# 如何重新启动Windows服务
我想重新启动名为“后台处理程序”的窗口服务,我是按照代码做的,但运气不好,任何人都不知道出了什么问题? 代码是 例外是 “System.InvalidOperationException:无法在上启动后台处理程序 计算机“”。-->System.ComponentModel.Win32Exception:实例 该服务的一部分已在运行 ---内部异常堆栈跟踪的结束--- 位于System.ServiceProcess.ServiceController.Start(字符串[]args) 在System.ServiceProcess.ServiceController.Start()处 在servicerestart.Form1.button1\单击(对象发送方,事件参数e) 在D:\samplecodes\servicerestart\servicerestart\Form1.cs中:第33行“C# 如何重新启动Windows服务,c#,.net,winforms,visual-studio-2010,windows-services,C#,.net,Winforms,Visual Studio 2010,Windows Services,我想重新启动名为“后台处理程序”的窗口服务,我是按照代码做的,但运气不好,任何人都不知道出了什么问题? 代码是 例外是 “System.InvalidOperationException:无法在上启动后台处理程序 计算机“”。-->System.ComponentModel.Win32Exception:实例 该服务的一部分已在运行 ---内部异常堆栈跟踪的结束--- 位于System.ServiceProcess.ServiceController.Start(字符串[]args) 在Syst
您必须在停止服务后等待,然后才能使用以下方法再次启动服务:
我认为问题在于,您需要管理员权限才能启动和停止服务,这就是为什么您必须授予所需的权限 要执行此操作,请将ISS中applicationpool的标识更改为LocalSystem
希望这有帮助
,但运气不佳
不是一个非常精确的问题描述。您能否对这个问题进行更具体的描述,不涉及运气或上帝,而是涉及具体的错误消息或不希望出现的行为。@Darin Dimitrov我已经更新了我的问题它看起来可以工作,但我看不到服务小程序(SCM)中的服务正在停止和启动。我们有什么机制可以快速停止并立即启动吗?没有,这是在.NET中启动和停止服务的正确方法。您也可以在服务启动后等待。我不认为在.Start()之后;方法,将有一个ServiceControllerStatus.Started方法。有一个编译错误是的,应该是正在运行
,而不是已启动
。我已经更新了我的答案。仍然在小程序窗口中,我无法看到服务已停止和启动。也许一切都进展得很快??是否有任何机制可以从注册表或任何地方查看serivce是否停止和启动??从事件日志中,我无法看到它
using System.ServiceProcess;
ServiceController service = new ServiceController("Spooler");
if ((service.Status.Equals(ServiceControllerStatus.Stopped)) ||
(service.Status.Equals(ServiceControllerStatus.StopPending)))
{
service.Start();
}
else
{
service.Stop();
service.Start();
}
else
{
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped);
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running);
}