zoukankan      html  css  js  c++  java
  • 服务安装类

    一下是服务安装的类,包括服务的安装,启动,暂停,卸载等。

    以下是代码:

     public sealed class OperWindowsService
        {
            //安装服务
            public static void InstallService(string filepath, string serviceName, string[] options)
            {
                try
                {
                    if (!IsServiceExisted(serviceName))
                    {
                        IDictionary mySavedState = new Hashtable();
                        AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                        myAssemblyInstaller.UseNewContext = true;
                        myAssemblyInstaller.Path = filepath;
                        myAssemblyInstaller.CommandLine = options;
                        myAssemblyInstaller.Install(mySavedState);
                        myAssemblyInstaller.Commit(mySavedState);
                        myAssemblyInstaller.Dispose();
                    }
                }
                catch (Exception ex)
                {
                   // throw new Exception("Install Service Error
    " + ex.Message);
                }
            }
            //卸载服务
            public static void UnInstallService(string filepath, string serviceName, string[] options)
            {
                try
                {
                    if (IsServiceExisted(serviceName))
                    {
                        AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                        myAssemblyInstaller.UseNewContext = true;
                        myAssemblyInstaller.Path = filepath;
                        myAssemblyInstaller.CommandLine = options;
                        myAssemblyInstaller.Uninstall(null);
                        myAssemblyInstaller.Dispose();
                    }
                }
                catch (Exception ex)
                {
                  //  throw new Exception("UnInstall Service Error
    " + ex.Message);
                }
            }
            //判断服务是否存在
            public static bool IsServiceExisted(string serviceName)
            {
                ServiceController[] services = ServiceController.GetServices();
                foreach (ServiceController s in services)
                {
                    if (s.DisplayName == serviceName)
                    {
                        return true;
                    }
                }
                return false;
            }
            //启动服务
            public static bool StartService(string serviceName)
            {
                try
                {
                    if (IsServiceExisted(serviceName))
                    {
                        System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                        if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running &&
                            service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
                        {
                            service.Start();
                        }
                        service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(60));
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                catch
                {
                    return false;
                }
            }
            //停止服务
            public static bool StopService(string serviceName)
            {
                try
                {
                    if (IsServiceExisted(serviceName))
                    {
                        System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                        if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                        {
                            service.Stop();
                            service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(60));
                            return true;
                        }
                    }
                    return false;
                }
                catch
                {
                    return false;
                }
            }
            /// <summary>
            /// 判断服务是否启动
            /// </summary>
            /// <param name="serviceName"></param>
            /// <returns></returns>
            public static bool IsServiceRunning(string serviceName)
            {
                if (IsServiceExisted(serviceName))
                {
                    System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                    if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                   return false;
                }
            }
        }
    服务安装
  • 相关阅读:
    gitlab配置ssh连接
    java 函数编程之Consumer接口的使用
    一枚程序猿的MacBook M1详细体验报告
    【线上问题排查技巧】动态修改LOGGER日志级别
    【线上排查实战】AOP切面执行顺序你真的了解吗
    阿里巴巴Canal常见问题:重复解析/Filter失效/消费落后
    使用Binlog日志恢复误删的MySQL数据实战
    Git实战技巧:恢复被强制push -f失踪的代码
    一次完整的JVM堆外内存泄漏故障排查记录
    Java线上问题排查神器Arthas快速上手与原理浅谈
  • 原文地址:https://www.cnblogs.com/sczmzx/p/3605336.html
Copyright © 2011-2022 走看看