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 }