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 }