在C#中,我们可以利用以下方法判断Windows服务是否存在

在C#中,我们可以利用以下方法判断Windows服务是否存在         

private bool IsServiceExisted(string serviceName) 

ServiceController[] services = ServiceController.GetServices(); 
foreach (ServiceController s in services) 

if (s.ServiceName == serviceName) 

return true; 


return false; 

}


解释一下上面的方法:
ServiceController[]--表示Windows服务集合。
ServiceController.GetServices()--检索本地计算机上的所有服务(设备驱动程序服务除外),返回System.ServiceProcess.ServiceController类型的数组,其中每个元素均与本地计算机上的一个服务关联

注意:
1,在使用ServiceController类前,我们必须引用命名空间System.ServiceProcess,而引用该命名空间,我们又必须在引用中添加System.ServiceProcess引用(在网上看到很多朋友说vs2008要从网上下载System.ServiceProcess.dll,其实不用,直接在vs2008的引用上右键- >添加引用,在.NET标签栏下就可以找到System.ServiceProcess了,选中直接确定就行了)

2,ServiceController有两个名称,一个是DisplayName,一个是ServiceName:
DisplayName-服务的友好名称,可用于标识该服务(就是我们在"控制面板"- >"服务"中看到的显示名称)
ServiceName--服务进行标识的名称(这个才是服务的真正名称,也就是我们在"控制面板"- >"服务"中看到的服务名称)

3,ServiceController中其它一些有用的方法与属性:
1)Status属性:指示该服务现在是正在运行、已停止还是已暂停,或者启动、停止、暂停或继续命令被挂起。
2)Pause()方法:暂停该服务。
3)Start()方法:启动该服务。
4)Stop()方法:停止该服务。

有了这些方法,我们就可以方便的对找到的服务进行操作了,比如要启动服务:

private void RunningService(string serviceName) 

ServiceController[] services = ServiceController.GetServices(); 
foreach (ServiceController s in services) 

if (s.ServiceName == serviceName) 

if (s.Status != ServiceControllerStatus.Running) 

s.Start(); 


}
}

猜你喜欢

转载自blog.csdn.net/chh19941125/article/details/81739491
今日推荐