我有自己的注册处理程序的自定义Windows服务,如何从服务管理器收到停止命令时阻止它停止?我在服务和GUI之间建立了管道通信,我想只从GUI停止它,当我向Windows服务发送消息“停止”而不是当我试图从Windows服务管理器停止它时。我在C#工作
答案 0 :(得分:12)
这会回答你的问题吗?
http://bytes.com/topic/c-sharp/answers/444965-prevent-service-stopping
将CanStop属性设置为false。然后,您将需要一个用户可以用来请求停止的应用程序。然后,此应用程序将与您的服务进行通信(可能通过远程处理),如果条件允许,请自行停止。您应该能够通过动态设置'CanStop'为true,然后使用ServiceController类连接到自己并发出'Stop'命令来完成此操作。
答案 1 :(得分:0)
作为替代方案,您可以简单地保护服务设置(修改服务DACL),以便只有特殊用户帐户(可能是SYSTEM)才有权在安装期间停止服务并安装此特殊本地用户帐户。
然后,您的控制应用程序可以使用此特殊用户的安全令牌使用标准的服务控制管理器功能,一切都将按预期工作,而不必做任何异常。