zoukankan      html  css  js  c++  java
  • C#安装,启动,停止,卸载Windows服务

     public class OptionServices
        {
            //安装服务
            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.ServiceName == serviceName)
                    {
                        return true;
                    }
                }
                return false;
            }
            //启动服务
            public static void StartService(string serviceName)
            {
                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));
                    }
                }
            }
            //停止服务
            public static void StopService(string serviceName)
            {
                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));
                    }
                }
            }
        }

  • 相关阅读:
    使用 connect http proxy 绕过 ssh 防火墙限制
    Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案
    Mac 下 Chrome 浏览器 ERR_NETWORK_CHANGED 报错解决方案
    SCSS & SASS Color 颜色函数用法
    eggjs 框架代理调试 SELF_SIGNED_CERT_IN_CHAIN 报错解决方案
    【转】谷歌安装Axure浏览器插件
    js 图片转base64并压缩
    ajax请求
    postman如何重置账号的密码
    解决url中&times会被转成×的问题
  • 原文地址:https://www.cnblogs.com/lisengl/p/3336209.html
Copyright © 2011-2022 走看看