Windows服务的安装,启动,停止和卸载

直接贴代码如下

  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;
        }
    }
View Code

猜你喜欢

转载自www.cnblogs.com/baibanr/p/9474543.html