c# Windows服务管理

.NET Framework中提供的类库可以很方便的实现对windows服务的安装、卸载、启动、停止、获取运行状态等功能。这些类都在System.ServiceProcess命名空间下。

所以,在开始编写程序之前,需要先引用System.ServiceProcess。

获取Windows服务列表:

// 获取服务列表
ServiceController[] serviceList = ServiceController.GetServices();
// 按名称排序
serviceList = serviceList.OrderBy(m => m.displayName).ToArray();
// 遍历服务列表
foreach (ServiceController sc in serviceList)
{
    // 服务信息
}

启动服务:

string serviceName="服务名称";
ServiceController sc = new ServiceController(serviceName); //建立服务对象
if ((sc.Status.Equals(ServiceControllerStatus.Stopped)) || (sc.Status.Equals(ServiceControllerStatus.StopPending)))
{
    sc.Start();
    sc.WaitForStatus(ServiceControllerStatus.Running); //等待启动
    sc.Refresh();
}

停止服务:

string serverName="服务名称";
ServiceController sc = new ServiceController(serviceName); //建立服务对象
if (sc.Status.Equals(ServiceControllerStatus.Running))
{
    sc.Stop();
    sc.WaitForStatus(ServiceControllerStatus.Stopped);  //等待停止
    sc.Refresh();
}

重启服务:

string serviceName = "服务名称";
ServiceController sc = new ServiceController(serviceName); //建立服务对象
if (sc.Status.Equals(ServiceControllerStatus.Running))
{
    sc.Stop();
    sc.WaitForStatus(ServiceControllerStatus.Stopped);  //等待停止
    sc.Refresh();
}
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running); //等待启动
sc.Refresh();

 

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...