【发布时间】:2011-03-08 15:36:28
【问题描述】:
一个 Windows 服务是否有可能检测到其他正在运行的 Windows 服务之一是否已停止?
出于某种原因,第 3 方服务有时会停止,我必须重新手动启动它们。我需要一项服务来自动化这个烦人的过程。
【问题讨论】:
-
在“服务”控制面板中,查看“恢复”选项卡。
标签: windows service detection status
一个 Windows 服务是否有可能检测到其他正在运行的 Windows 服务之一是否已停止?
出于某种原因,第 3 方服务有时会停止,我必须重新手动启动它们。我需要一项服务来自动化这个烦人的过程。
【问题讨论】:
标签: windows service detection status
我强烈建议您将精力集中在纠正诊断出的问题上,而不是解决症状。找出为什么第三方服务停止/失败并将问题扼杀在萌芽状态。
但是,如果您必须暂时实现某些东西,请查看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();
}
}
【讨论】: