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);
                }
            }
  • 相关阅读:
    关于H5中的Canvas API的探索
    leetcode297 Serialize and Deserialize Binary Tree
    CF1187E Tree Painting
    CF1187D Subarray Sorting
    CF1183E/H Subsequences
    kickstart2019 round_C B. Circuit Board
    leetcode85 Maximal Rectangle
    leetcode84 Largest Rectangle in Histogram
    kickstart2019 round_A B. Parcels
    蓝桥杯 正则问题
  • 原文地址:https://www.cnblogs.com/zhao-yi/p/10271419.html
Copyright © 2011-2022 走看看