一下是服务安装的类,包括服务的安装,启动,暂停,卸载等。
以下是代码:
public sealed class OperWindowsService { //安装服务 public static void InstallService(string filepath, string serviceName, string[] options) { try { if (!IsServiceExisted(serviceName)) { IDictionary mySavedState = new Hashtable(); AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller(); myAssemblyInstaller.UseNewContext = true; myAssemblyInstaller.Path = filepath; myAssemblyInstaller.CommandLine = options; myAssemblyInstaller.Install(mySavedState); myAssemblyInstaller.Commit(mySavedState); myAssemblyInstaller.Dispose(); } } catch (Exception ex) { // throw new Exception("Install Service Error " + ex.Message); } } //卸载服务 public static void UnInstallService(string filepath, string serviceName, string[] options) { try { if (IsServiceExisted(serviceName)) { AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller(); myAssemblyInstaller.UseNewContext = true; myAssemblyInstaller.Path = filepath; myAssemblyInstaller.CommandLine = options; myAssemblyInstaller.Uninstall(null); myAssemblyInstaller.Dispose(); } } catch (Exception ex) { // throw new Exception("UnInstall Service Error " + ex.Message); } } //判断服务是否存在 public static bool IsServiceExisted(string serviceName) { ServiceController[] services = ServiceController.GetServices(); foreach (ServiceController s in services) { if (s.DisplayName == serviceName) { return true; } } return false; } //启动服务 public static bool StartService(string serviceName) { try { if (IsServiceExisted(serviceName)) { System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName); if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending) { service.Start(); } service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(60)); return true; } else { return false; } } catch { return false; } } //停止服务 public static bool StopService(string serviceName) { try { if (IsServiceExisted(serviceName)) { System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName); if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running) { service.Stop(); service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(60)); return true; } } return false; } catch { return false; } } /// <summary> /// 判断服务是否启动 /// </summary> /// <param name="serviceName"></param> /// <returns></returns> public static bool IsServiceRunning(string serviceName) { if (IsServiceExisted(serviceName)) { System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName); if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running) { return true; } else { return false; } } else { return false; } } }