zoukankan      html  css  js  c++  java
  • Windows服务操作帮助类

    /// <summary>
            /// 打开系统服务
            /// </summary>
            /// <param name="serviceName">系统服务名称</param>
            /// <returns></returns>
            public static Tuple<bool, string> Open(string serviceName)
            {
                try
                {
                    using (ServiceController control = new ServiceController(serviceName))
                    {
                        if (control.Status != ServiceControllerStatus.Running)
                        {
                            control.Start();
                        }
                    }
                    return new Tuple<bool, string>(true, "成功");
                }
                catch (Exception e)
                {
                    return new Tuple<bool, string>(false, e.Message);
                }
            }
    
            /// <summary>
            /// 关闭系统服务
            /// </summary>
            /// <param name="serviceName">系统服务名称</param>
            /// <returns></returns>
            public static Tuple<bool, string> Close(string serviceName)
            {
                try
                {
                    using (ServiceController control = new ServiceController(serviceName))
                    {
    
                        if (control.Status == ServiceControllerStatus.Running)
                        {
                            control.Stop();
                        }
                    }
                    return new Tuple<bool, string>(true, "成功");
                }
                catch (Exception e)
                {
                    return new Tuple<bool, string>(false, e.Message);
                }
            }
    
            /// <summary>
            /// 重启系统服务
            /// </summary>
            /// <param name="serviceName">系统服务名称</param>
            /// <returns></returns>
            public static Tuple<bool, string> ReStart(string serviceName)
            {
                try
                {
                    using (ServiceController control = new ServiceController(serviceName))
                    {
                        if (control.Status == ServiceControllerStatus.Running)
                        {
                            control.Continue();
                        }
                    }
                    return new Tuple<bool, string>(true, "成功");
                }
                catch (Exception e)
                {
                    return new Tuple<bool, string>(false, e.Message);
                }
            }
    
            /// <summary>
            /// 返回服务状态
            /// </summary>
            /// <param name="serviceName">系统服务名称</param>
            /// <returns>1:服务未运行 2:服务正在启动 3:服务正在停止 4:服务正在运行 5:服务即将继续 6:服务即将暂停 7:服务已暂停 0:未知状态</returns>
            public static int GetSystemServiceStatus(string serviceName)
            {
                try
                {
                    using (ServiceController control = new ServiceController(serviceName))
                    {
                        return (int)control.Status;
                    }
                }
                catch
                {
                    return 0;
                }
            }
    
            /// <summary>
            /// 返回服务状态
            /// </summary>
            /// <param name="serviceName">系统服务名称</param>
            /// <returns>1:服务未运行 2:服务正在启动 3:服务正在停止 4:服务正在运行 5:服务即将继续 6:服务即将暂停 7:服务已暂停 0:未知状态</returns>
            public static string GetSystemServiceStatusString(string serviceName)
            {
                try
                {
                    using (ServiceController control = new ServiceController(serviceName))
                    {
                        var status = string.Empty;
                        switch ((int)control.Status)
                        {
                            case 1:
                                status = "服务未运行";
                                break;
                            case 2:
                                status = "服务正在启动";
                                break;
                            case 3:
                                status = "服务正在停止";
                                break;
                            case 4:
                                status = "服务正在运行";
                                break;
                            case 5:
                                status = "服务即将继续";
                                break;
                            case 6:
                                status = "服务即将暂停";
                                break;
                            case 7:
                                status = "服务已暂停";
                                break;
                            case 0:
                                status = "未知状态";
                                break;
                        }
                        return status;
                    }
                }
                catch
                {
                    return "未知状态";
                }
            }
    
            /// <summary>
            /// 安装服务
            /// </summary>
            /// <param name="stateSaver"></param>
            /// <param name="filepath"></param>
            public static void Install(IDictionary stateSaver, string filepath)
            {
                try
                {
                    AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller
                    {
                        UseNewContext = true,
                        Path = filepath
                    };
                    myAssemblyInstaller.Install(stateSaver);
                    myAssemblyInstaller.Commit(stateSaver);
                    myAssemblyInstaller.Dispose();
                }
                catch (Exception ex)
                {
                    throw new Exception("installServiceError/n" + ex.Message);
                }
            }
    
            /// <summary>
            /// 判断服务是否存在
            /// </summary>
            /// <param name="serviceName"></param>
            /// <returns></returns>
            public static bool Existed(string serviceName)
            {
                ServiceController[] services = ServiceController.GetServices();
                return services.Any(s => s.ServiceName == serviceName);
            }
    
            /// <summary>
            /// 卸载服务
            /// </summary>
            /// <param name="filepath">路径和文件名</param>
            public static void UnInstall(string filepath)
            {
                try
                {
                    AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller
                    {
                        UseNewContext = true,
                        Path = filepath
                    };
                    myAssemblyInstaller.Uninstall(null);
                    myAssemblyInstaller.Dispose();
                }
                catch (Exception ex)
                {
                    throw new Exception("unInstallServiceError/n" + ex.Message);
                }
            }
  • 相关阅读:
    HtmlAgilityPack
    随笔-20150513
    过滤掉html 标签
    json转换
    第28月第3天 c语言读写文件
    第27月第28天 iOS bundle
    第27月第27天 https
    第27月第25天 clang -rewrite-objc main.m
    第27月第24天 git pull fetch
    第27月第18天 epoll lt et
  • 原文地址:https://www.cnblogs.com/zhao-yi/p/10271419.html
Copyright © 2011-2022 走看看