ServiceHelper-Windows服务辅助类

来源:互联网 发布:制做头像软件 编辑:程序博客网 时间:2024/05/16 06:15
using System;using System.Collections;using System.Configuration.Install;using System.ServiceProcess;namespace PowerEasy.Software.OfficeConvertHelper{    /// <summary>    /// Windows服务辅助类    /// </summary>    internal class ServiceHelper    {        /// <summary>        ///     检查服务存在的存在性        /// </summary>        /// <param name="nameService">服务名</param>        /// <returns>存在返回 true,否则返回 false;</returns>        public static bool IsServiceExisted(string nameService)        {            var services = ServiceController.GetServices();            foreach (var s in services)            {                if (s.ServiceName.ToLower() == nameService.ToLower())                {                    return true;                }            }            return false;        }        /// <summary>        ///     安装Windows服务        /// </summary>        /// <param name="filepath">程序文件路径</param>        public static void InstallService(string filepath)        {            IDictionary stateSaver = new Hashtable();            var installer = new AssemblyInstaller();            installer.UseNewContext = true;            installer.Path = filepath;            stateSaver.Clear();            installer.Install(stateSaver);            installer.Commit(stateSaver);            installer.Dispose();        }        /// <summary>        ///     卸载Windows服务        /// </summary>        /// <param name="filepath">程序文件路径</param>        public static void UnInstallService(string filepath)        {            var installer = new AssemblyInstaller();            installer.UseNewContext = true;            installer.Path = filepath;            installer.Uninstall(null);            installer.Dispose();        }        /// <summary>        ///     检查Windows服务是否在运行        /// </summary>        /// <param name="serviceName">程序的服务名</param>        public static bool IsRunning(string serviceName)        {            bool isRun = false;            try            {                if (!IsServiceExisted(serviceName))                {                    return false;                }                var sc = new ServiceController(serviceName);                if (sc.Status == ServiceControllerStatus.StartPending ||                    sc.Status == ServiceControllerStatus.Running)                {                    isRun = true;                }                sc.Close();            }            catch            {                isRun = false;            }            return isRun;        }        /// <summary>        ///     启动Windows服务        /// </summary>        /// <param name="serviceName">程序的服务名</param>        /// <returns>启动成功返回 true,否则返回 false;</returns>        public static bool StartService(string serviceName)        {            var sc = new ServiceController(serviceName);            if (sc.Status == ServiceControllerStatus.Stopped || sc.Status == ServiceControllerStatus.StopPending                )            {                sc.Start();                sc.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 10));            }            sc.Close();            return true;        }        /// <summary>        ///     停止Windows服务        /// </summary>        /// <param name="serviceName">程序的服务名</param>        /// <returns>停止成功返回 true,否则返回 false;</returns>        public static bool StopService(string serviceName)        {            var sc = new ServiceController(serviceName);            if (sc.Status == ServiceControllerStatus.Running ||                sc.Status == ServiceControllerStatus.StartPending)            {                sc.Stop();                sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 10));            }            sc.Close();            return true;        }        /// <summary>        ///     重启Windows服务        /// </summary>        /// <param name="serviceName">程序的服务名</param>        /// <returns>重启成功返回 true,否则返回 false;</returns>        public static bool RefreshService(string serviceName)        {            return StopService(serviceName) && StartService(serviceName);        }    }}

原创粉丝点击