Windows 服务在重新启动后不会自动启动?

Jam*_*ley 10 windows .net service

我们有一些用 .NET 编写的 Windows 服务。它们在服务 mmc 中手动启动良好,但尽管设置为自动,但在打开(或重新启动)机器时它们永远不会启动。

更新在事件日志中,我没有看到“xyz 已启动”以及所有其他服务正在启动,而是看到“xyz 服务进入停止状态”。和一个单独的错误,指出“在等待来自 slsvc 服务的事务响应时达到超时(30000 毫秒)。”。

如果我手动启动它们,那么我会按预期在事件日志中得到一个正常的条目,一切都很好 - 直到下一个 Windows 更新补丁强制重新启动并且所有服务再次关闭。

有任何想法吗?我试过将它们设置为延迟启动,没有明显区别。

Rob*_*oir 1

当您说“我们有一些 Windows 服务”时,您的意思是什么?这对我来说意味着它们是由您组织内的某人内部创建的?如果是这样,那么您比这里的其他人更有能力调试它们 - 这些服务对 Windows 组件有什么依赖关系,您的程序员是否考虑测试这些服务的可用性并在您的服务启动时等待它们上线?

您是否考虑过将这些服务设置为软件许可服务(这就是slsvc)的依赖项?

来自http://support.microsoft.com/kb/193888

要创建新的依赖项,请选择代表要延迟的服务的子项,单击“编辑”,然后单击“添加值”。创建数据类型为 REG_MULTI_SZ 的新值名称“DependOnService”(不带引号),然后单击“确定”。出现“数据”对话框时,键入您希望在此服务之前启动的一个或多个服务的名称,每行一个条目,然后单击“确定”。

您在“数据”对话框中输入的服务名称与出现在注册表中“服务”项下的服务名称完全相同。

当计算机启动时,它会使用此条目来验证此值中列出的一个或多个服务是否已启动,然后再尝试启动相关服务。