zoukankan      html  css  js  c++  java
  • C#检验Windows Service是否存在和启动

    检验某个Service是否存在:

    using System;
    using System.ServiceProcess;
    using System.Windows.Forms;
    
    private static bool IsExistSqlServer(string serviceName)
            {
                bool result = false;
                ServiceController[] controllers = ServiceController.GetServices();
                int nNum = controllers.Length;
                try
                {
                    for (int i = 0; i <= (nNum - 1); i++)
                    {
                        if ((controllers[i].ServiceName.ToUpper() == serviceName.ToUpper()))
                        {
                            result = true;
                            break;
                        }
                    }
                }
                catch(Exception e)
                {
                    Helper.Write(e.Message);
                    result = false;
                }
                return result;
            }

    其中:类ServiceController的说明:

    表示 Windows 服务并允许连接到正在运行或者已停止的服务、对其进行操作或获取有关它的信息。

    public static ServiceController[] GetDevices(string machineName)

    说明: 检索本地计算机上的所有服务(设备驱动程序服务除外)。 返回结果: System.ServiceProcess.ServiceController 类型的数组,其中每个元素均与本地计算机上的一个服务关联。

    启动一个Windows服务

     1  private static bool IsStartService(string serviceName)
     2         {
     3             ServiceController[] controllers = ServiceController.GetServices();
     4             int nNum = controllers.Length;
     5             try
     6             {
     7                 for (int i = 0; i <= (nNum - 1); i++)
     8                 {
     9                     Application.DoEvents();
    10                     if ((controllers[i].ServiceName.ToUpper() == serviceName.ToUpper()))
    11                     {
    12                         if ((controllers[i].Status != ServiceControllerStatus.Running))
    13                         {
    14                             if ((controllers[i].Status != ServiceControllerStatus.Running))
    15                             {
    16                                 controllers[i].Start();
    17                             }
    18                             controllers[i].WaitForStatus(ServiceControllerStatus.Running);
    19                         }
    20                         return true;
    21                     }
    22                 }
    23                 return true;
    24             }
    25             catch(Exception e)
    26             {
    27                 Helper.Write(e.Message);
    28                 return false;
    29             }
    30         }

    其中:

    public void Start() --启动服务,不传递任何参数。

    WaitForStatus:无休止的等待服务达到指定状态。
  • 相关阅读:
    个人技术总结--MUI框架的h5+前端开发
    无废话MVC入门教程四[视图中的Layout使用]
    VMware Workstation 12 安装大于4GB的GHOST 64位win7系统
    转:VMware Workstation 14虚拟机安装Win7系统图文教程(详细)
    VMware Workstation Pro v15.5.6 官方版+激活密钥
    Idea 全局替换指定字符
    Springboot 使用PageHelper分页插件实现分页
    使用redis做分布式锁
    浅说缓存穿透、缓存击穿、缓存雪崩
    linux下安装mysql5.6
  • 原文地址:https://www.cnblogs.com/qinlixue/p/2913578.html
Copyright © 2011-2022 走看看