设置 Windows 服务的状态
Setting Windows Service's Status
我正在尝试创建一个 windows 服务,运行 是我拥有的一个 exe。我一直在使用来自 msdn 的 this guide。
我 运行 我的 exe 作为 Process
在 OnStart
开始并在 OnStop
停止。
我想知道服务状态 sc query *name*
是如何更新的。
我已尝试按照上述指南的状态部分 here,但调用
serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED;
SetServiceStatus(this.ServiceHandle, ref serviceStatus);
并且指南中的那些类型的功能似乎没有任何作用。
我希望能够将服务的状态设置为停止,如果我的 exe 服务 运行s 崩溃或被杀死。
我想到的一个想法是在 OnStart
的线程中有一个单独的函数 运行,它将使用 process.WaitForExit();
阻塞。在线程停止阻塞后,我想使用上面的函数将服务状态设置为已停止。
有谁知道为什么我无法设置服务状态,或者如何将服务状态link 设置为服务 运行 的 exe?谢谢
不设置服务状态。听起来你应该在 exe 崩溃或被杀死时停止你的服务。
要停止服务,请使用 ServiceBase.Stop()
https://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.stop.aspx
这会将服务状态更改为已停止。
我正在尝试创建一个 windows 服务,运行 是我拥有的一个 exe。我一直在使用来自 msdn 的 this guide。
我 运行 我的 exe 作为 Process
在 OnStart
开始并在 OnStop
停止。
我想知道服务状态 sc query *name*
是如何更新的。
我已尝试按照上述指南的状态部分 here,但调用
serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED;
SetServiceStatus(this.ServiceHandle, ref serviceStatus);
并且指南中的那些类型的功能似乎没有任何作用。
我希望能够将服务的状态设置为停止,如果我的 exe 服务 运行s 崩溃或被杀死。
我想到的一个想法是在 OnStart
的线程中有一个单独的函数 运行,它将使用 process.WaitForExit();
阻塞。在线程停止阻塞后,我想使用上面的函数将服务状态设置为已停止。
有谁知道为什么我无法设置服务状态,或者如何将服务状态link 设置为服务 运行 的 exe?谢谢
不设置服务状态。听起来你应该在 exe 崩溃或被杀死时停止你的服务。 要停止服务,请使用 ServiceBase.Stop()
https://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.stop.aspx
这会将服务状态更改为已停止。