using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.ComponentModel; // 先添加该引用 namespace LYFZ.WindowsServiceHandling { /// /// 服务类型 /// public enum ServiceType { /// /// 主服务 /// [Description("LYFZ.WcfSystmeService.exe")] LYFZ_WcfSystmeService, /// /// 测试 /// [Description("Test.exe")] Test } /// /// 服务管理 /// public class ServiceManagement { /// /// 获取服务程序名 如:LYFZ.SystmeService.exe /// /// /// public static string GetServiceProgramName(ServiceType e) { return LYFZ.WinAPI.CustomPublicMethod.ConvertEnumToDescription(e); } /// /// 获取服务名 如:LYFZ_SystmeService /// /// /// public static string GetServiceName(ServiceType e) { return e.ToString(); } /// /// 安装服务 /// /// 服务程序名称,如:“WindowsService.exe” /// public static bool InstallService(string ServiceProgram) { string[] args = { ServiceProgram }; return ExecuteServiceCommand(args); } /// /// 卸载服务 /// /// 服务程序名称,如:“WindowsService.exe” /// public static bool UninstallService(string ServiceProgram) { string[] args = { "/u", ServiceProgram }; return ExecuteServiceCommand(args); } /// /// 执行服务Install命令 /// /// 参数 args 就是你用 InstallUtil.exe 工具安装时的参数 /// public static bool ExecuteServiceCommand(string[] args) { try { System.Configuration.Install.ManagedInstallerClass.InstallHelper(args); //参数 args 就是你用 InstallUtil.exe 工具安装时的参数。一般就是一个exe的文件名 return true; } catch { return false; } } /// /// 检查指定的服务是否存在。 /// /// 要查找的服务名字 /// 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; } /// /// 检查服务是否正在运行 /// /// /// 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; } } /// /// 启动服务 /// /// 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 ("要启动的服务不存在,请先安装服务..."); } } /// /// 停止服务 /// /// 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 } }