【问题标题】:Detect windows service failure检测windows服务故障
【发布时间】:2011-03-08 15:36:28
【问题描述】:

一个 Windows 服务是否有可能检测到其他正在运行的 Windows 服务之一是否已停止?

出于某种原因,第 3 方服务有时会停止,我必须重新手动启动它们。我需要一项服务来自动化这个烦人的过程。

【问题讨论】:

  • 在“服务”控制面板中,查看“恢复”选项卡。

标签: windows service detection status


【解决方案1】:

我强烈建议您将精力集中在纠正诊断出的问题上,而不是解决症状。找出为什么第三方服务停止/失败并将问题扼杀在萌芽状态。

但是,如果您必须暂时实现某些东西,请查看ServiceController,并在this MSDN link 找到信息。这将允许您查询服务、它们的状态,并进一步控制它们,就像根据您的特定情况调用Start一样。

假设(可能与更好的判断相反)您正在使用 .NET,并且由于我对它的喜爱,将 C# 作为语言,请考虑以下快速现成的示例:

//Add a reference to System.ServiceProcess

using System.ServiceProcess;

var services = ServiceController.GetServices();
foreach (var service in services)
{
    if (service.ServiceName == myServiceName &&
        service.Status == ServiceControllerStatus.Stopped)
    {
        service.Start();
    }
}

【讨论】:

  • 我最终实现了与您的解决方案非常相似的东西,我只是想知道是否有一种方法可以“监听”特定服务的状态变化。实施的解决方案在时间间隔内使用轮询。感谢您的建议。
猜你喜欢
  • 2020-07-07
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 2010-10-20
  • 2018-09-14
  • 1970-01-01
  • 2014-11-22
相关资源
最近更新 更多