zoukankan      html  css  js  c++  java
  • C# 操作windows服务[启动、停止、卸载、安装]

    主要宗旨:不已命令形式操作windows服务

          static void Main(string[] args)
            {
                var path = @"E:开发辅助项目WCFWCF.TestWCF.TestinDebugWCF.Test.exe";
                var serviceName = "WCF_TestService";
                HandleService hs = new HandleService();
                //启动服务
                hs.StartService(serviceName);
                //停止服务
                hs.StopService(serviceName);
                //卸载服务
                hs.DeleteService(path);
                //安装服务
                hs.InstallService(path);
                Console.ReadKey();
            }

    操作类

     public class HandleService
        {
    
            /// <summary>
            /// 获取服务
            /// </summary>
            /// <param name="serviceName">服务名</param>
            /// <returns></returns>
            public ServiceController GetService(string serviceName)
            {
                try
                {
                    //可以获取所有的服务
                    //ServiceController[] service = ServiceController.GetServices();
    
                    //无法打开计算上的服务控制管理器。
                    //ServiceController[] service = ServiceController.GetServices(serviceName);
                    //if (service.Length <= 0) return null;
    
                    ServiceController service = new ServiceController(serviceName);
                    return service;
                }
                catch (Exception ex)
                {
                    return null;
                }
            }
    
            /// <summary>
            /// 安装服务
            /// </summary>
            /// <param name="path">路径</param>
            public void InstallService(string path)
            {
                try
                {
                    AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                    myAssemblyInstaller.UseNewContext = true;
                    myAssemblyInstaller.Path = path;
                    myAssemblyInstaller.Install(null);
                    myAssemblyInstaller.Commit(null);
                    myAssemblyInstaller.Dispose();
    
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.Read();
            }
    
            /// <summary>
            /// 启动服务
            /// </summary>
            /// <param name="serviceName">服务名</param>
            public void StartService(string serviceName)
            {
                try
                {
                    var service = GetService(serviceName);
                    if (service == null)
                    {
                        Console.Write($"windows上不存在{serviceName}服务!");
                        return;
                    }
                    if (service.Status == ServiceControllerStatus.Paused ||
                        service.Status == ServiceControllerStatus.Stopped)
                    {
                        service.Start();
                        service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 30));
                    }
                    Console.WriteLine($"{serviceName}已经启动");
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
            /// <summary>
            /// 停止服务
            /// </summary>
            /// <param name="serviceName">服务名</param>
            public void StopService(string serviceName)
            {
                try
                {
                    var service = GetService(serviceName);
                    if (service == null)
                    {
                        Console.Write($"windows上不存在{serviceName}服务!");
                        return;
                    }
                    if (service.Status == ServiceControllerStatus.Running ||
                        service.Status == ServiceControllerStatus.PausePending || service.Status == ServiceControllerStatus.StartPending)
                    {
                        service.Stop();
                        service.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 30));
                    }
                    Console.WriteLine($"{serviceName}已经停止");
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
            /// <summary>
            /// 卸载服务
            /// </summary>
            /// <param name="path"></param>
            public void DeleteService(string path)
            {
                try
                {
                    AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                    myAssemblyInstaller.UseNewContext = true;
                    myAssemblyInstaller.Path = path;
                    myAssemblyInstaller.Uninstall(null);
                    myAssemblyInstaller.Dispose();
                    Console.WriteLine("卸载服务成功!");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("卸载服务失败");
                }
    
            }
    
        }
  • 相关阅读:
    mysqlp批量替换的sql语句
    Paypal 支付功能的 C# .NET / JS 实现
    Layui table 组件的使用:初始化加载数据、数据刷新表格、传参数
    WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决
    entity framework codefirst 用户代码未处理DataException,InnerException基础提供程序在open上失败,数据库生成失败
    《设计模式》一书中的23种设计模式
    C++程序实例唯一方案,窗口只打开一次,程序只打开一次
    重构——与设计模式的恋情
    重构——一个小例子
    C#通过调用WinApi打印PDF文档类,服务器PDF打印、IIS PDF打印
  • 原文地址:https://www.cnblogs.com/xiaoyaodijun/p/6566200.html
Copyright © 2011-2022 走看看