windows服务

  1 /// <summary>
  2         /// Windows服务类
  3         /// </summary>
  4         /// <summary>
  5             /// 检查服务存在的存在性
  6             /// </summary>
  7             /// <param name=" NameService ">服务名</param>
  8             /// <returns>存在返回 true,否则返回 false;</returns>
  9             public static bool isServiceIsExisted(string NameService)
 10             {
 11                 ServiceController[] services = ServiceController.GetServices();
 12                 foreach (ServiceController s in services)
 13                 {
 14                     if (s.ServiceName.ToLower() == NameService.ToLower())
 15                     {
 16                         return true;
 17                     }
 18                 }
 19                 return false;
 20             }
 21 
 22             /// <summary>
 23             /// 安装Windows服务
 24             /// </summary>
 25             /// <param name="stateSaver">集合</param>
 26             /// <param name="filepath">程序文件路径</param>
 27             public static void InstallmyService(IDictionary stateSaver, string filepath)
 28             {
 29                 AssemblyInstaller AssemblyInstaller1 = new AssemblyInstaller();
 30                 AssemblyInstaller1.UseNewContext = true;
 31                 AssemblyInstaller1.Path = filepath;
 32                 AssemblyInstaller1.Install(stateSaver);
 33                 AssemblyInstaller1.Commit(stateSaver);
 34                 AssemblyInstaller1.Dispose();
 35             }
 36 
 37             /// <summary>
 38             /// 卸载Windows服务
 39             /// </summary>
 40             /// <param name="filepath">程序文件路径</param>
 41             public static void UnInstallmyService(string filepath)
 42             {
 43                 AssemblyInstaller AssemblyInstaller1 = new AssemblyInstaller();
 44                 AssemblyInstaller1.UseNewContext = true;
 45                 AssemblyInstaller1.Path = filepath;
 46                 AssemblyInstaller1.Uninstall(null);
 47                 AssemblyInstaller1.Dispose();
 48             }
 49 
 50             /// <summary>
 51             /// 检查Windows服务是否在运行
 52             /// </summary>
 53             /// <param name="name">程序的服务名</param>
 54             public static bool IsRunning(string name)
 55             {
 56                 bool IsRun = false;
 57                 try
 58                 {
 59                     if (!isServiceIsExisted(name))
 60                     {
 61                         return false;
 62                     }
 63                     ServiceController sc = new ServiceController(name);
 64                     if (sc.Status == ServiceControllerStatus.StartPending ||
 65                         sc.Status == ServiceControllerStatus.Running)
 66                     {
 67                         IsRun = true;
 68                     }
 69                     sc.Close();
 70                 }
 71                 catch
 72                 {
 73                     IsRun = false;
 74                 }
 75                 return IsRun;
 76             }
 77 
 78             /// <summary>
 79             /// 启动Windows服务
 80             /// </summary>
 81             /// <param name="name">程序的服务名</param>
 82             /// <returns>启动成功返回 true,否则返回 false;</returns>
 83             public static bool StarmyService(string name)
 84             {
 85                 ServiceController sc = new ServiceController(name);
 86                 if (sc.Status == ServiceControllerStatus.Stopped || sc.Status == ServiceControllerStatus.StopPending
 87                         )
 88                 {
 89                     sc.Start();
 90                     sc.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 10));
 91                 }
 92                 else
 93                 {
 94                 }
 95                 sc.Close();
 96                 return true;
 97             }
 98 
 99             /// <summary>
100             /// 停止Windows服务
101             /// </summary>
102             /// <param name="name">程序的服务名</param>
103             /// <returns>停止成功返回 true,否则返回 false;</returns>
104             public static bool StopmyService(string name)
105             {
106                 ServiceController sc = new ServiceController(name);
107                 if (sc.Status == ServiceControllerStatus.Running ||
108                     sc.Status == ServiceControllerStatus.StartPending)
109                 {
110                     sc.Stop();
111                     sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 10));
112                 }
113                 else
114                 {
115                 }
116                 sc.Close();
117                 return true;
118             }
119 
120             /// <summary>
121             /// 重启Windows服务
122             /// </summary>
123             /// <param name="name">程序的服务名</param>
124             /// <returns>重启成功返回 true,否则返回 false;</returns>
125             public static bool RefreshmyService(string name)
126             {
127                 return StopmyService(name) && StarmyService(name);
128             }
原文地址:https://www.cnblogs.com/tangge/p/2857079.html