我编写了一个Windows服务,它在Windows 2000计算机上运行。有时此服务的可执行文件已终止,但Windows服务仍在服务管理器中列为“已启动”。在这种情况下,为此服务定义的重新启动行为不会生效。
当然,这个过程需要调试,但我现在正在寻找解决方法。
我该如何避免这种情况? Windows 2000中的服务管理器如何确定Windows 2000进程是否仍在启动?
答案 0 :(得分:2)
这可能意味着服务崩溃了。 IIRC,当服务进程异常终止时,旧版本的Windows并不总能恢复。但那是多年前的事,我的记忆可能有问题。
避免这种情况的最佳方法是弄清楚导致服务崩溃和修复的原因。
答案 1 :(得分:0)
虽然作为微软员工的拉里可能比其他任何人都更清楚,但我敢说你应该ChangeServiceConfig2
SERVICE_CONFIG_FAILURE_ACTIONS
一次{{1}}。我曾经做过一项遗留服务,在我进行重构之前,曾经经常崩溃。我的前任选择的补救措施是使用失败操作来调用一个程序(在SYSTEM下运行)然后重新启动服务就像没有发生任何事情一样。
所有这一切只有在您的服务在其自己的流程中运行时才有效,我假设您按照您描述的方式运行。如果您的服务是在DLL中实现的,那么不将起作用。
但我完全同意拉里的意见,你应该调查并解决问题,而不是试图隐瞒它。如上所述,我修复了有问题的服务,它没有崩溃或很少崩溃,每个人都对这个解决方案更满意;)