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
}
}