Windows服务恢复未重新启动服务

M S*_*kel 20 windows windows-services

我将Windows服务的恢复配置为在故障后延迟一分钟重新启动.但我从来没有得到它实际重启服务(即使有最明显的错误).

我在EventViewer中收到一条消息:

无法找到源(MyApp.exe)中的事件ID(1)的说明.本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息.您可以使用/ AUXSOURCE =标志来检索此描述; 请参阅帮助和支持以获取详细信 以下信息是事件的一部分:模块"MyApp.exe"中地址00429874处的访问冲突.写地址00456704.

我还有别的办法吗?我的代码中有什么东西(我使用Delphi)需要设置才能启用它吗?

Rei*_*man 21

服务恢复旨在处理服务崩溃的情况 - 因此,如果您转到taskmgr并右键单击服务流程上的"结束流程",恢复逻辑应该启动.我不相信服务恢复逻辑会启动如果您的服务正常退出(即使它退出时出现错误).

此外,eventvwr消息指示您的应用程序调用ReportEvent API指定事件ID 1.但您尚未使用事件查看器注册事件消息,因此无法将事件ID 1转换为有意义的文本字符串.

  • 谢谢。这让我们对情况有了一些了解。我发现当我从 taskmgr 执行“结束进程”时,它会在事件查看器中生成以下内容: 将在 60000 毫秒内采取以下纠正措施: 重新启动服务。现在我的问题(与我的编码有关)是让它“不优雅地”终止,以便恢复逻辑启动。 (2认同)

sup*_*ary 9

Service Recovery仅适用于(exit(-1))调用等意外退出.对于我们用通常方式停止服务的所有方式都不适用于恢复.如果要停止服务并仍希望恢复工作,请调用exit(-1),您将看到错误消息"服务因意外错误而停止",然后您的服务将在恢复设置时重新启动.

  • 对于那些寻找确切方法的人,请尝试Environment.Exit(-1); (2认同)