我有一个 Windows 服务A这取决于服务乙。
根据这个Microsoft 知识库文章我可以添加一个注册表项来告诉 Windows 等待乙在开始之前开始A。
我可以期待服务吗A之前被关闭乙当我关闭 Windows 时?
答案1
不幸的是,Windows Vista 之前版本不支持。
以下是来自权威机构的解释:http://support.microsoft.com/kb/203878
Windows Vista(及更新版本)具有“服务关闭排序”功能。此功能由“PreShutDownOrder”注册表值控制(在http://technet.microsoft.com/en-us/magazine/2007.03.vistakernel.aspx)。
在 Google 上用“site:microsoft.com”搜索“PreShutDownOrder”返回的结果数量少得可怜。它似乎只是微软的半文档。我会尝试一下,看看它是否能满足您的要求。
以下是“Ask Perf”博客中的一篇博文(顺便说一句,如果你想了解 Windows 内部结构,这是一个非常棒的博客):https://techcommunity.microsoft.com/t5/Ask-The-Performance-Team/WS2008-Service-Shutdown-and-Crash-Handling/ba-p/372708
答案2
当您手动关闭依赖于其他服务的服务时,该服务会先关闭其他服务,然后再关闭自身。
编辑:Evan Anderson 发布了一条链接,关于在 UPS 等设备上运行操作系统时关闭操作系统时不使用依赖项。这是一个很好的、有效的观点(尽管它没有提到 2000 以上的 Windows。)