6

我有一个带有我自己的注册处理程序的自定义 Windows 服务,当它收到来自服务管理器的停止命令时,如何防止它停止?我在服务和 GUI 之间建立了管道通信,我只想从 GUI 停止它,当我向 Windows 服务发送消息“停止”时,而不是在我尝试从 Windows 服务管理器停止它时。我正在使用 C#

4

2 回答 2

12

这回答了你的问题了吗?

http://bytes.com/topic/c-sharp/answers/444965-prevent-service-stopping

将 CanStop 属性设置为 false。然后,您将需要一个用户可以用来请求停止的应用程序。然后,此应用程序将与您的服务通信(可能通过远程处理),如果条件允许,则自行停止。您应该能够通过将“CanStop”动态设置为 true,然后使用 ServiceController 类连接到自己并发出“Stop”命令来做到这一点。

于 2012-06-20T17:48:04.213 回答
0

作为替代方案,您可以简单地保护服务设置(修改服务 DACL),以便只有特殊用户帐户(可能还有 SYSTEM)有权在安装期间停止服务并安装此特殊本地用户帐户。

然后,您的控制应用程序可以使用具有此特殊用户安全令牌的标准服务控制管理器功能,并且一切都将按预期工作,而无需执行任何异常操作。

于 2012-07-22T13:28:25.297 回答