必须保持活跃的应用程序

必须保持活跃的应用程序

我需要一种方法来强制我的应用程序(名为 watchdog)保持运行,即使我故意关闭它。此应用程序同时检查其他两个应用程序(辅助控制和数据传输)的活动。每当这两个应用程序之一关闭时,watchdog 就准备使其再次运行。但是当 watchdog 关闭时,没有一个应用程序再运行。我该怎么做?有没有可以应付该任务的 Windows 服务?

谢谢你的帮助!


谢谢大家!

经过多次反复尝试,我终于可以让我的看门狗应用程序持续控制“辅助控制”和“数据传输”窗口应用程序的运行。实际上,让两个窗口应用程序由第三个窗口应用程序控制是没有意义的,主要是因为它们本身的性质 - 它们的存在是为了提供交互,因此任何人只要想要就可以停止看门狗。这是自然而然的事情。考虑到 Simon 的建议,我决定将控制权提升到一个新的水平,现在将我的看门狗开发为 Windows 服务。我知道这可能不是最好的方式,因为服务本身正在与基于 GUI 的应用程序通信,完全不推荐。我将我的看门狗服务设置为允许桌面交互,现在没有什么可以阻止它保持活动状态,当然,除非有恶意用户停止服务。

如果有人需要像这样的持续控制,我认为这可能是一个明确的解决方案。

答案1

如果服务意外关闭,Windows 服务控制管理器可以重新启动服务,但不会重新启动服务,因为服务是响应“停止”控制消息而停止的。对于意外事件(如未处理的异常),此功能可以自动重新启动程序。但是,如果服务是用户故意停止的,它就无济于事了。

听起来你可以写一个“Watchdog Watchdog”,但之后你需要一个“Watchdog Watchdog Watchdog”。在某个时候你只能放弃,并假设如果有人想停止你的软件,它就会被停止。

您可以使用“计划任务”定期检查看门狗程序是否正在运行并重新启动它。

答案2

有点敷衍,但如果您的“看门狗”应用程序是自家开发的服务,那么您可以让它在 SCM 要求其停止时在事件日志中记录事件。然后您可以设置事件触发器(请参阅事件触发器)重新启动该服务。

答案3

从您的描述来看,您似乎还需要一个监控系统。我们这样做了 - 我们有一堆看门狗脚本,我们有一个 topdog 脚本来监控所有列出的看门狗是否正在运行 - 并且我们每 4 小时检查一次 HPOV 以验证 topdog 是否正在运行。如果没有,我们会收到警报。

编辑 - 如果您不知道的话,HPOV 是一个外部监控系统。要获得这种级别的可靠性和监控,您需要从业务系统外部进行监控。

相关内容