Windows 服务触发器启动 - 手动与自动的区别?

Ric*_*rno 22 windows windows-service

自 Windows Server 2008 R2(以及我认为用于客户端操作系统的 Windows 7)以来trigger start,Microsoft 已经为服务引入了服务。我确实理解automatic,automatic (delayed)manual启动类型之间的区别。从我在谷歌搜索的文章中读到的,我相信我确实理解trigger start(虽然从未使用过)的逻辑。

我不太确定我理解的是配置为automatic (trigger start)和的服务的差异,manual (trigger start)我没有运气找到任何解释。

我有点认为在这两种情况下,除非触发器启动它,否则服务不会运行,那么实际上有什么区别?

我遇到这个问题的原因实际上是监视自动启动类型的服务。由于服务设置为以触发器启动并且触发器无效,因此服务未运行并且监控以这种方式报告它,该自动服务未运行。

总结一下 - 我的问题是:

  1. automatic (trigger start)manual (trigger start)服务有什么区别?
  2. 如果服务将从 切换到automatic (trigger start)manual (trigger start)是否会对服务/应用程序(一般)产生任何影响?

Rya*_*ies 33

操作系统启动时自动启动服务。手动服务没有。可以将触发器添加到服务中以使其在某些事件上启动,例如 ETW 事件或插入的 USB 设备等。触发器可以添加到手动或自动服务。

自动(触发器启动)服务上的触发器示例:

C:\Users\Ryan>sc qtriggerinfo dnscache
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: dnscache

        START SERVICE
          FIREWALL PORT EVENT          : b7569e07-8421-4ee0-ad10-86915afdad09 [PORT OPEN]
            DATA                       : 5355;UDP;
Run Code Online (Sandbox Code Playgroud)

手动(触发器启动)服务上的触发器示例:

C:\Users\Ryan>sc qtriggerinfo appinfo
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: appinfo

        START SERVICE
          NETWORK EVENT                : bc90d167-9470-4139-a9ba-be0bbbf5b74d [RPC INTERFACE EVENT]
            DATA                       : 201ef99a-7fa0-444c-9399-19ba84f12a1a
        START SERVICE
          NETWORK EVENT                : bc90d167-9470-4139-a9ba-be0bbbf5b74d [RPC INTERFACE EVENT]
            DATA                       : 5f54ce7d-5b79-4175-8584-cb65313a0e98
        START SERVICE
          NETWORK EVENT                : bc90d167-9470-4139-a9ba-be0bbbf5b74d [RPC INTERFACE EVENT]
            DATA                       : fd7a0523-dc70-43dd-9b2e-9c5ed48225b1
        START SERVICE
          NETWORK EVENT                : bc90d167-9470-4139-a9ba-be0bbbf5b74d [RPC INTERFACE EVENT]
            DATA                       : 58e604e8-9adb-4d2e-a464-3b0683fb1480
Run Code Online (Sandbox Code Playgroud)

可以将服务设置为自动,以便在操作系统加载后立即启动,但也可以在服务没有更多工作要做时自行停止。停止后,触发器可以随时再次启动。

所以总结一下,自动和手动服务都可以有手动启动它们的触发器。唯一的区别是自动服务在操作系统加载后立即启动。