Windows服务的关闭顺序

Windows服务的关闭顺序,windows,service,Windows,Service,设三种服务,如下所示: 接受关机前通知并在“PreshutdownOrder”注册表设置中排序的服务。(A类) 接受关机前通知且无序的服务,也就是说,它们不在“PreshutdownOrder”注册表设置中列出。(乙类) 不接受关机前通知的服务。(C类) 根据链接,A型服务似乎比B型服务先关闭 根据我对不接受关机前通知的服务(如SA)和接受关机前通知的服务(如SB)的测试(如果在注册表中列出,则可以是a型,如果未在注册表中列出,则可以是B型),我观察到,无论SA和SB是否以任何顺序列在“Pres

设三种服务,如下所示:

  • 接受关机前通知并在“PreshutdownOrder”注册表设置中排序的服务。(A类)
  • 接受关机前通知且无序的服务,也就是说,它们不在“PreshutdownOrder”注册表设置中列出。(乙类)
  • 不接受关机前通知的服务。(C类)
  • 根据链接,A型服务似乎比B型服务先关闭

    根据我对不接受关机前通知的服务(如SA)和接受关机前通知的服务(如SB)的测试(如果在注册表中列出,则可以是a型,如果未在注册表中列出,则可以是B型),我观察到,无论SA和SB是否以任何顺序列在“PreshutdownOrder”注册表设置中,SB总是在SA之前关闭

    因此,尽管我观察到类型C服务在类型A和B服务之后关闭,但是我无法找到相同的文档。有人能给我指一下相关的文件来证实这种行为总是正确的吗


    我问这个问题是因为我使用的是第三方白名单服务SA,希望它总是在内部开发的服务SB之后关闭。

    SA不理解关闭前通知,SB理解,所以不管关闭顺序如何,SB当然会先关闭,因为SA在发送预关闭请求时不会执行任何操作。根据定义,“预关闭”将首先发生,因此,除非类型a或类型B服务挂起,否则它将在类型C之前关闭。您的关闭顺序链接记录了这种行为,因为不理解预关闭通知的服务在计算机开始关闭时将不会收到预关闭请求。您希望文档进一步解释什么?感谢Matt花时间阅读我的帖子并回复。据我所知,Shutdown Ordering link提到以下内容:注册预关闭通知并在注册表Shutdown中排序的服务,在注册预关闭通知但未在注册表中排序的服务之前先关闭。它在哪里提到注册预关闭通知的服务在未注册预关闭通知的服务之前关闭?这是你从链接中提到的东西推断出来的吗?在我的测试中,我让SB注册了关机前通知,并将其关机延迟了两分钟。服务SA是第三方服务,我无权访问其源代码,根据
    sc query
    命令的结果,此服务不注册关机前通知。仍然在服务SA之前关闭服务SB。虽然我想要这种行为,但我没有证据证明这种行为总是正确的。因此,我正在寻找有关该主题的相关文档。您希望行为至少在某些时候是不正确的,对吗?如果这句话是正确的,你就根本不能依赖这种行为。因此,除非您需要证明您无法实现目标,否则您真正的目标是找到一种方法来提供此关闭令-您是否考虑过将第三方白名单服务设置为内部服务的依赖项,以便Windows知道内部服务必须在其依赖项之前停止,然后再开始?再次感谢Matt。在读取“当用户关闭系统时,使用服务_ACCEPT_PRESHUTDOWN控制代码调用SetServiceStatus的所有控制处理程序都将接收服务_control_PRESHUTDOWN控制代码。服务控制管理器将等待服务停止或指定的预关机超时值过期。”,似乎注册预关闭通知的服务会在未注册预关闭通知的服务关闭之前关闭。你同意吗?