在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();
}
}
}
}
暂停与停止服务与上面类似,就不一一举例了。
利用其它方法操作Windows服务,请参看本站:
在Asp.net C#中启动服务,关闭服务,安装服务,卸载服务的方法View使用教程