【问题标题】:Prevent Windows service manager from stopping a service c#防止 Windows 服务管理器停止服务 c#
【发布时间】:2012-06-22 22:05:14
【问题描述】:

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

【问题讨论】:

  • 机器关机了怎么办?停止服务的命令不是来自服务管理器吗?
  • 这不是违背了使用 Windows 服务的目的吗?
  • 好吧,我不在乎目的,我只是想做。
  • 关闭是对的,没想到。
  • 问题是我不希望用户停止它,即使它是管理员。我该怎么做?

标签: c# .net windows-services wmi


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这能回答你的问题吗?

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

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

    【讨论】:

    • 同意您的评论不能阻止 OnStop 中的停止命令。我删除了我的答案。
    • 完美。正是我要找的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多