123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.ComponentModel; // 先添加该引用
- namespace LYFZ.WindowsServiceHandling
- {
- /// <summary>
- /// 服务类型
- /// </summary>
- public enum ServiceType
- {
- /// <summary>
- /// 主服务
- /// </summary>
- [Description("LYFZ.WcfSystmeService.exe")]
- LYFZ_WcfSystmeService,
- /// <summary>
- /// 测试
- /// </summary>
- [Description("Test.exe")]
- Test
-
- }
- /// <summary>
- /// 服务管理
- /// </summary>
- public class ServiceManagement
- {
- /// <summary>
- /// 获取服务程序名 如:LYFZ.SystmeService.exe
- /// </summary>
- /// <param name="e"></param>
- /// <returns></returns>
- public static string GetServiceProgramName(ServiceType e)
- {
- return LYFZ.WinAPI.CustomPublicMethod.ConvertEnumToDescription(e);
- }
- /// <summary>
- /// 获取服务名 如:LYFZ_SystmeService
- /// </summary>
- /// <param name="e"></param>
- /// <returns></returns>
- public static string GetServiceName(ServiceType e)
- {
- return e.ToString();
- }
- /// <summary>
- /// 安装服务
- /// </summary>
- /// <param name="ServiceProgram">服务程序名称,如:“WindowsService.exe”</param>
- /// <returns></returns>
- public static bool InstallService(string ServiceProgram)
- {
- string[] args = { ServiceProgram };
- return ExecuteServiceCommand(args);
- }
- /// <summary>
- /// 卸载服务
- /// </summary>
- /// <param name="ServiceProgram">服务程序名称,如:“WindowsService.exe”</param>
- /// <returns></returns>
- public static bool UninstallService(string ServiceProgram)
- {
- string[] args = { "/u", ServiceProgram };
- return ExecuteServiceCommand(args);
- }
- /// <summary>
- /// 执行服务Install命令
- /// </summary>
- /// <param name="args">参数 args 就是你用 InstallUtil.exe 工具安装时的参数</param>
- /// <returns></returns>
- public static bool ExecuteServiceCommand(string[] args)
- {
- try
- {
- System.Configuration.Install.ManagedInstallerClass.InstallHelper(args);
- //参数 args 就是你用 InstallUtil.exe 工具安装时的参数。一般就是一个exe的文件名
- return true;
- }
- catch
- {
- return false;
- }
- }
- /// <summary>
- /// 检查指定的服务是否存在。
- /// </summary>
- /// <param name="serviceName">要查找的服务名字</param>
- /// <returns></returns>
- public static bool ServiceIsExisted(string svcName)
- {
- System.ServiceProcess.ServiceController[] services = System.ServiceProcess.ServiceController.GetServices();
- foreach (System.ServiceProcess.ServiceController s in services)
- {
- if (s.ServiceName == svcName)
- {
- return true;
- }
- }
- return false;
- }
- /// <summary>
- /// 检查服务是否正在运行
- /// </summary>
- /// <param name="ServiceName"></param>
- /// <returns></returns>
- public static bool CheckServiceIsRunning(string ServiceName)
- {
- try
- {
- System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController(ServiceName);
- if (s.Status == System.ServiceProcess.ServiceControllerStatus.Running)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- catch { return false; }
- }
- /// <summary>
- /// 启动服务
- /// </summary>
- /// <param name="ServiceName"></param>
- public static string StartService(string ServiceName)
- {
- if (ServiceIsExisted(ServiceName))
- {
- System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController(ServiceName);
- if (s.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
- {
- s.Start();
- return("“"+s.DisplayName+"”启动成功");
- //System.Diagnostics.Process.Start("cmd.exe");//启动一个外部应用程序
- }
- else
- {
- return ("“" + s.DisplayName + "”正在运行...");
- }
- }
- else {
- return ("要启动的服务不存在,请先安装服务...");
- }
- }
- /// <summary>
- /// 停止服务
- /// </summary>
- /// <param name="ServiceName"></param>
- public static string StopService(string ServiceName)
- {
- if (ServiceIsExisted(ServiceName))
- {
- System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController(ServiceName);
-
- if (s.Status == System.ServiceProcess.ServiceControllerStatus.Running)
- {
- s.Stop();
- return ("“" + s.DisplayName + "”停止成功");
- }
- else
- {
- return ("“" + s.DisplayName + "”已经停止");
- }
- }
- else
- {
- return ("要停止的服务不存在,无需停止!");
- }
- }
- #region 服务其它管理
- #endregion
- }
- }
|