ServiceOperate.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace LYFZ.Network.Service
  6. {
  7. /// <summary>
  8. /// 服务操作类
  9. /// </summary>
  10. class ServiceOperate
  11. {
  12. public ServiceOperate() {
  13. }
  14. /// <summary>
  15. /// 启动服务
  16. /// </summary>
  17. /// <param name="ServiceName">服务名</param>
  18. /// <returns></returns>
  19. public bool StartService(string ServiceName)
  20. {
  21. bool bl = false;
  22. if (ServiceIsExisted(ServiceName))
  23. {
  24. System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController(ServiceName);
  25. if (s.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
  26. {
  27. s.Start();
  28. bl = true;
  29. //System.Diagnostics.Process.Start("cmd.exe");//启动一个外部应用程序
  30. }
  31. }
  32. return bl;
  33. }
  34. /// <summary>
  35. /// 停止服务
  36. /// </summary>
  37. /// <param name="ServiceName">服务名</param>
  38. /// <returns></returns>
  39. public bool StopService(string ServiceName)
  40. {
  41. bool bl = false;
  42. if (ServiceIsExisted(ServiceName))
  43. {
  44. System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController(ServiceName);
  45. if (s.Status == System.ServiceProcess.ServiceControllerStatus.Running)
  46. {
  47. s.Stop();
  48. bl = true;
  49. }
  50. }
  51. return bl;
  52. }
  53. /// <summary>
  54. /// 安装服务
  55. /// </summary>
  56. /// <param name="ServiceProgram">服务程序名称,如:“WindowsService.exe”</param>
  57. /// <returns></returns>
  58. public bool InstallService(string ServiceProgram)
  59. {
  60. string[] args = { ServiceProgram };
  61. return ExecuteServiceCommand(args);
  62. }
  63. /// <summary>
  64. /// 卸载服务
  65. /// </summary>
  66. /// <param name="ServiceProgram">服务程序名称,如:“WindowsService.exe”</param>
  67. /// <returns></returns>
  68. public bool UninstallService(string ServiceProgram)
  69. {
  70. string[] args = { "/u", ServiceProgram };
  71. return ExecuteServiceCommand(args);
  72. }
  73. /// <summary>
  74. /// 执行服务Install命令
  75. /// </summary>
  76. /// <param name="args">参数 args 就是你用 InstallUtil.exe 工具安装时的参数</param>
  77. /// <returns></returns>
  78. public bool ExecuteServiceCommand(string[] args)
  79. {
  80. try
  81. {
  82. System.Configuration.Install.ManagedInstallerClass.InstallHelper(args);
  83. //参数 args 就是你用 InstallUtil.exe 工具安装时的参数。一般就是一个exe的文件名
  84. return true;
  85. }
  86. catch
  87. {
  88. return false;
  89. }
  90. }
  91. /// <summary>
  92. /// 检查指定的服务是否存在。
  93. /// </summary>
  94. /// <param name="serviceName">要查找的服务名字</param>
  95. /// <returns></returns>
  96. private bool ServiceIsExisted(string svcName)
  97. {
  98. System.ServiceProcess.ServiceController[] services = System.ServiceProcess.ServiceController.GetServices();
  99. foreach (System.ServiceProcess.ServiceController s in services)
  100. {
  101. if (s.ServiceName == svcName)
  102. {
  103. return true;
  104. }
  105. }
  106. return false;
  107. }
  108. }
  109. }