一个Windows服务是否可以检测其他正在运行的Windows服务之一是否已停止?
出于某种原因,第三方服务有时会停止,我必须再次手动启动它们。我需要一项服务来自动化这个烦人的过程。
答案 0 :(得分:5)
我强烈建议您针对纠正已诊断问题而不是消防症状的目标。找出为什么第三方服务正在停止/失败,并将问题扼杀在萌芽状态。
但是,如果您必须暂时实施某些内容,请查看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();
}
}