3

我正在开发具有七个 Windows 服务和一个用户界面的旧产品。服务中有一些错误会导致每 10-15 天崩溃一次。我需要编写一个应用程序来监控服务的状态。如果服务崩溃,我需要向管理员发送电子邮件以启动服务。

我无法使用自动恢复过程,因为在某些崩溃期间,会出现 Microsoft 错误报告对话框或其他一些对话框,并且该服务正在考虑运行,直到消息被确认。

因此,我计划使用这个单独的应用程序/监视服务来监控崩溃,直到原始服务中的错误完全修复。

请分享您对看门狗服务设计的看法。

谢谢。

4

4 回答 4

2

从您的问题中,我了解到 Windows 无法判断服务是否结束,因为它显示了一个对话框。如果 Windows 无法检测到该服务已关闭,那么另一个应用程序如何。
你必须找到这样的证据,证明这个过程正在做应该做的事情。检查日志文件是否正在增长或查看是否正在写入事件是最简单的事情。

于 2010-03-02T07:12:08.573 回答
1

您的问题表明,由于未单击错误对话框,因此不会触发 Windows 服务恢复。也许您需要的是检测错误对话框是否打开并单击按钮。这样服务就可以成功退出,windows服务恢复就可以启动了。

附上了一个程序,用于自动单击烦人的明文对话框。下面是驱动程序的示例配置文件。您需要做的就是添加一行新的 clickInfo 并填写正确的窗口和按钮标题。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="clickConfiguration" type="ClickButton.ClickConfigurationSection, ClickButton"/>
  </configSections>
  <clickConfiguration>    
    <clickInfo windowName="ClearCase" buttonName="Proceed" />
  </clickConfiguration>  
</configuration>

希望能帮助到你!

于 2010-03-03T19:53:26.520 回答
0

如果您无法修复这些服务,但可以将它们“公开”为 Internet 上的 HTTP 资源,则可以使用在线网站监控服务定期检查服务是否仍在运行。创建一个知道如何在本地“ping”您的服务并通过其中一个监控服务按计划请求其页面的小型网站。

我知道一些这样的服务:http : //www.setcronjob.com/、http : //www.webcron.org/、http : //scheduler.codeeffects.com。最后一个甚至可以监视您专用网络上的 HTTP 资源,但此功能不是免费的。希望这可以帮助。

于 2010-03-02T14:41:39.287 回答
-1

有趣的是,您需要手动编辑注册表以禁用 Drwatson,并且有一个命令行可以将其重新启用;)在这里,查看此 Microsoft KB:http: //support.microsoft.com/kb/188296

于 2010-03-02T07:44:11.890 回答