直接贴代码如下
public class RunServices { /// <summary> /// 安装并启动服务 /// </summary> /// <param name="str_ServiceName">服务名称</param> /// <param name="str_ServiceAbsolutePath">服务绝对路径</param> /// <returns></returns> public static string InstallAndStartService(string str_ServiceName,string str_ServiceAbsolutePath) { string str_Message = string.Empty; string svcName = str_ServiceName;// 服务名字; string[] args = new string[] { str_ServiceAbsolutePath };//@"服务绝对路劲" //string[] strArray2 = new string[] { "/u", str_ServiceAbsolutePath };//@"服务绝对路劲" try { if (!ServiceIsExisted(svcName)) { ManagedInstallerClass.InstallHelper(args); ServiceController controller = new ServiceController(svcName); if (controller.Status == ServiceControllerStatus.Stopped) { controller.Start(); } str_Message = string.Format("{0} service has been started!", str_ServiceName); } else { str_Message = string.Format("{0} service is not installed!", str_ServiceName); } } catch (Exception exception) { str_Message = exception.Message; //if (ServiceIsExisted(svcName))//这里是卸载服务 //{ // ManagedInstallerClass.InstallHelper(strArray2); //} } return str_Message; } /// <summary> /// 安装服务 /// </summary> /// <param name="str_ServiceName">服务名称</param> /// <param name="str_ServiceAbsolutePath">服务绝对路径</param> /// <returns></returns> public static string InstallService(string str_ServiceName, string str_ServiceAbsolutePath) { string str_Message = string.Empty; string svcName = str_ServiceName;// 服务名字; string[] args = new string[] { str_ServiceAbsolutePath };//@"服务绝对路劲" //string[] strArray2 = new string[] { "/u", str_ServiceAbsolutePath };//@"服务绝对路劲" try { if (!ServiceIsExisted(svcName)) { ManagedInstallerClass.InstallHelper(args); str_Message = string.Format("{0} service has been installed!", str_ServiceName); } else { str_Message = string.Format("{0} service is not installed!", str_ServiceName); } } catch (Exception exception) { str_Message = exception.Message; //if (ServiceIsExisted(svcName))//这里是卸载服务 //{ // ManagedInstallerClass.InstallHelper(strArray2); //} } return str_Message; } /// <summary> /// 启动服务 /// </summary> /// <param name="str_ServiceName">服务名称</param> /// <returns></returns> public static string StartService(string str_ServiceName) { string str_Message = string.Empty; string svcName = str_ServiceName;// 服务名字; try { if (ServiceIsExisted(svcName)) { ServiceController controller = new ServiceController(svcName); if (controller.Status == ServiceControllerStatus.Stopped) { controller.Start(); } str_Message = string.Format("{0} service has been started!", str_ServiceName); } else { str_Message = string.Format("{0} service is not installed!", str_ServiceName); } } catch (Exception exception) { str_Message = exception.Message; } return str_Message; } /// <summary> /// 停止并卸载服务 /// </summary> /// <param name="str_ServiceName">服务名称</param> /// <param name="str_ServiceAbsolutePath">服务绝对路径</param> /// <returns></returns> public static string UInstallAndStopService(string str_ServiceName, string str_ServiceAbsolutePath) { string str_Message = string.Empty; string svcName = str_ServiceName;// 服务名字; //string[] args = new string[] { str_ServiceAbsolutePath };//@"服务绝对路劲" string[] strArray2 = new string[] { "/u", str_ServiceAbsolutePath };//@"服务绝对路劲" try { ServiceController controller = new ServiceController(svcName); if (ServiceIsExisted(svcName))//这里是卸载服务,先停止,再卸载 { if (controller.Status == ServiceControllerStatus.Running) { controller.Stop(); } ManagedInstallerClass.InstallHelper(strArray2); str_Message = string.Format("{0} service has been unloaded!", str_ServiceName); } else { str_Message = string.Format("{0} service is not installed!", str_ServiceName); } } catch (Exception exception) { str_Message = exception.Message; //if (ServiceIsExisted(svcName))//这里是卸载服务 //{ // ManagedInstallerClass.InstallHelper(strArray2); //} } return str_Message; } /// <summary> /// 卸载服务,跟UInstallAndStopService方法一样 /// </summary> /// <param name="str_ServiceName">服务名称</param> /// <param name="str_ServiceAbsolutePath">服务绝对路径</param> /// <returns></returns> public static string UInstallService(string str_ServiceName, string str_ServiceAbsolutePath) { return UInstallAndStopService(str_ServiceName, str_ServiceAbsolutePath); } /// <summary> /// 停止服务 /// </summary> /// <param name="str_ServiceName">服务名称</param> /// <returns></returns> public static string StopService(string str_ServiceName) { string str_Message = string.Empty; string svcName = str_ServiceName;// 服务名字; try { ServiceController controller = new ServiceController(svcName); if (ServiceIsExisted(svcName))//这里是卸载服务,先停止,再卸载 { if (controller.Status == ServiceControllerStatus.Running) { controller.Stop(); } str_Message = string.Format("{0} service has been stoped!", str_ServiceName); } else { str_Message = string.Format("{0} service is not installed!", str_ServiceName); } } catch (Exception exception) { str_Message = exception.Message; } return str_Message; } /// <summary> /// 判断是否有此服务 /// </summary> /// <param name="svcName">服务名称</param> /// <returns></returns> public static bool ServiceIsExisted(string svcName) { foreach (ServiceController controller in ServiceController.GetServices()) { if (controller.ServiceName == svcName) { return true; } } return false; } }