zoukankan      html  css  js  c++  java
  • C#操作服务类

    //一、安装服务: private void InstallService(IDictionary stateSaver, string filepath) { try { System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController("ServiceName"); if(!ServiceIsExisted("ServiceName")) { //Install Service AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller(); myAssemblyInstaller.UseNewContext = true; myAssemblyInstaller.Path =filepath; myAssemblyInstaller.Install(stateSaver); myAssemblyInstaller.Commit(stateSaver); myAssemblyInstaller.Dispose(); //--Start Service service.Start(); } else { if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending) { service.Start(); } } } catch (Exception ex) { throw new Exception("installServiceError/n" + ex.Message); } } //二、卸载windows服务: private void UnInstallService(string filepath) { try { if (ServiceIsExisted("ServiceName")) { //UnInstall Service AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller(); myAssemblyInstaller.UseNewContext = true; myAssemblyInstaller.Path = filepath; myAssemblyInstaller.Uninstall(null); myAssemblyInstaller.Dispose(); } } catch (Exception ex) { throw new Exception("unInstallServiceError/n" + ex.Message); } } //三、判断window服务是否存在: private bool ServiceIsExisted(string serviceName) { ServiceController[] services = ServiceController.GetServices(); foreach (ServiceController s in services) { if (s.ServiceName == serviceName) { return true; } } return false; } //四、启动服务: private void StartService(string serviceName) { if (ServiceIsExisted(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(); for (int i = 0; i < 60; i++) { service.Refresh(); System.Threading.Thread.Sleep(1000); if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running) { break; } if (i == 59) { throw new Exception(startServiceError.Replace("$s$", serviceName)); } } } } } //五、停止服务: private void StopService(string serviceName) { if (ServiceIsExisted(serviceName)) { System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName); if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running) { service.Stop(); for (int i = 0; i < 60; i++) { service.Refresh(); System.Threading.Thread.Sleep(1000); if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped) { break; } if (i == 59) { throw new Exception(stopServiceError.Replace("$s$", serviceName)); } } } } } // 停止指定的服务 public string StartService(string serviceName) { string strRst = null; ManagementObject mo = this.managementClass.CreateInstance(); mo.Path = new ManagementPath(this.strPath+".Name=/""+serviceName+"/""); try { if((string)mo["State"]=="Stopped")//!(bool)mo["AcceptStop"] mo.InvokeMethod("StartService",null); } catch(ManagementException e) { strRst =e.Message; } return strRst; } // 暂停指定的服务 public string PauseService(string serviceName) { string strRst = null; ManagementObject mo = this.managementClass.CreateInstance(); mo.Path = new ManagementPath(this.strPath+".Name=/""+serviceName+"/""); try { //判断是否可以暂停 if((bool)mo["acceptPause"]&&(string)mo["State"]=="Running") mo.InvokeMethod("PauseService",null); } catch(ManagementException e) { strRst =e.Message; } return strRst; } // 恢复指定的服务 public string ResumeService(string serviceName) { string strRst = null; ManagementObject mo = this.managementClass.CreateInstance(); mo.Path = new ManagementPath(this.strPath+".Name=/""+serviceName+"/""); try { //判断是否可以恢复 if((bool)mo["acceptPause"]&&(string)mo["State"]=="Paused") mo.InvokeMethod("ResumeService",null); } catch(ManagementException e) { strRst =e.Message; } return strRst; } // 停止指定的服务 public string StopService(string serviceName) { string strRst = null; ManagementObject mo = this.managementClass.CreateInstance(); mo.Path = new ManagementPath(this.strPath+".Name=/""+serviceName+"/""); try { //判断是否可以停止 if((bool)mo["AcceptStop"])//(string)mo["State"]=="Running" mo.InvokeMethod("StopService",null); } catch(ManagementException e) { strRst =e.Message; } return strRst; } } }
    作者:Angelo Lee
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    计算机系统结构之重要知识点总结2
    计算机系统结构之重要知识点总结1
    蓝桥杯 历届试题 幸运数(暴力打表)
    蓝桥杯 历届试题 网络寻路(dfs搜索合法路径计数)
    蓝桥杯 历届试题 约数倍数选卡片 (经典数论+DFS)
    蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)
    蓝桥杯 历届试题 小朋友排队(数状数组+离散化||归并排序||线段树+离散化)
    poj 1932 XYZZY(spfa最长路+判断正环+floyd求传递闭包)
    pycharm+selenium搭建环境之no module named 'selenium'异常解决
    Web自动化测试—— Selenium+Python Windows环境搭建
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887801.html
Copyright © 2011-2022 走看看