我正在开发一款具有七种Windows服务和一个用户界面的传统产品。服务中存在一些错误,每隔10-15天就会导致崩溃。我需要编写一个应用程序来监视服务的状态。如果服务崩溃,我需要向管理员发送电子邮件以启动服务。
我无法使用自动恢复过程,因为在某些崩溃期间,会出现Microsoft错误报告对话框或其他一些对话框,并且在确认消息之前,系统会考虑运行该服务。
因此,我打算使用这个单独的应用程序/监视服务来监视崩溃,直到原始服务中的错误完全修复。
请分享您对看门狗服务设计的看法。
感谢。
答案 0 :(得分:2)
从你的问题我明白,Windows无法判断服务是否结束,因为它显示了一个拨号。如果Windows无法检测到服务已关闭,那么另一个应用程序是什么 你必须找到证据证明这个过程正在做你应该做的事情。检查日志文件是否正在增长或查看是否正在写入事件是最简单的事情。
答案 1 :(得分:1)
您的问题表明,由于没有单击错误对话框,因此无法触发Windows服务恢复。也许您需要的是检测错误对话框是否打开并单击按钮。这样,服务可以成功退出,并且Windows服务恢复可以启动。
我有attached个用来自动点击恼人的clearcase对话框的程序。下面是一个驱动程序的示例配置文件。您需要做的就是添加一行新的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>
希望它有所帮助!
答案 2 :(得分:0)
如果您无法修复这些服务但可以在Internet上“公开”它们作为HTTP资源,则可以使用在线网站监控服务定期检查服务是否仍然存在。创建一个小型网站,该网站知道如何在本地“ping”您的服务,并通过其中一个监控服务按计划请求其页面。
我知道其中一些服务:http://www.setcronjob.com/,http://www.webcron.org/,http://scheduler.codeeffects.com。最后一个甚至可以监控您的专用网络上的HTTP资源,但此功能不是免费的。希望这会有所帮助。
答案 3 :(得分:-1)
有趣的是你需要手动编辑注册表以禁用Drwatson,并且有一个命令行来启用它;)在这里,检查这个Microsoft KB:http://support.microsoft.com/kb/188296