美文网首页
C#控制Window服务的状态

C#控制Window服务的状态

作者: 像牛嗷嗷 | 来源:发表于2017-11-24 16:48 被阅读20次

    最近想做这样一个效果,在网页控制Window服务启动和停止和状态:

    添加引用
    • Window服务在程序集System.ServiceProcess,然后增加using System.ServiceProcess;
    • 服务有几个状态,它是枚举类型,如下:
            //
            // 摘要:
            //     服务未运行。这对应于 Win32 SERVICE_STOPPED 常数,该常数定义为 0x00000001。
            Stopped = 1,
            //
            // 摘要:
            //     服务正在启动。这对应于 Win32 SERVICE_START_PENDING 常数,该常数定义为 0x00000002。
            StartPending = 2,
            //
            // 摘要:
            //     服务正在停止。这对应于 Win32 SERVICE_STOP_PENDING 常数,该常数定义为 0x00000003。
            StopPending = 3,
            //
            // 摘要:
            //     服务正在运行。这对应于 Win32 SERVICE_RUNNING 常数,该常数定义为 0x00000004。
            Running = 4,
            //
            // 摘要:
            //     服务即将继续。这对应于 Win32 SERVICE_CONTINUE_PENDING 常数,该常数定义为 0x00000005。
            ContinuePending = 5,
            //
            // 摘要:
            //     服务即将暂停。这对应于 Win32 SERVICE_PAUSE_PENDING 常数,该常数定义为 0x00000006。
            PausePending = 6,
            //
            // 摘要:
            //     服务已暂停。这对应于 Win32 SERVICE_PAUSED 常数,该常数定义为 0x00000007。
            Paused = 7
    
    更新服务类
    • 代码如下
        public static class WindowService
        {
            private const string SERVICE_NAME = "Fax";  //服务名称
    
            /// <summary>
            /// 获取Window服务状态
            /// </summary>
            /// <returns></returns>
            public static ServiceControllerStatus GetWinServiceState()
            {
                ServiceController sc = new ServiceController(SERVICE_NAME);
                return sc.Status;
            }
    
            /// <summary>
            /// 停止Window服务
            /// </summary>
            public static void StopWinService()
            {
                ServiceController sc = new ServiceController(SERVICE_NAME);
                sc.Stop();
            }
    
            /// <summary>
            /// 启动Window服务
            /// </summary>
            public static void StartWinService()
            {
                ServiceController sc = new ServiceController(SERVICE_NAME);
                sc.Start();
            }
    
            /// <summary>
            /// 启动Window服务
            /// </summary>
            public static void RestoreWinService()
            {
                ServiceController sc = new ServiceController(SERVICE_NAME);
                sc.Refresh();
            }
        }
    
    服务权限问题
    • 部署可能会遇到权限问题,如下:


    • 那么在可以修改应用程序池的标识,如下


    • 以上为个人遇到问题,仅供参考!

    相关文章

      网友评论

          本文标题:C#控制Window服务的状态

          本文链接:https://www.haomeiwen.com/subject/yqdfbxtx.html