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

    问题:windows服务安装时,出错:System.ComponentModel.Win32Exception: 帐户名无效或不存在,

    解决:将serviceProcessInstaller1->Accout属性,设为:LocalSystem(默认是User)。

       运行: Installuitl 程序名.exe ,安装成功。

       卸载是  Installuitl /u 程序名.exe 

    问题:如何不使用InstallUtil 安装 启动 停止 卸载 Windows服务?

    解决:用System.Configuration.Install.AssemblyInstaller类加载一个程序集,并运行其中的安装程序。    
        [C#]    
        //安装服务
        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\n" + 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\n" + 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));
                }
            }
        }

    问题:"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系。"

    public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    {   // 总是接受    
          return true;
    } 

    在发送请求前面加上如下一行代码:

    ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult;

    问题:如何制作批处理文件实现服务的安装和卸载

     安装

    %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0\yourService.exe
    Net Start yourService
    sc config
    yourService start= auto
    pause
    tip:
    1:%~dp0 表示批处理文件当前目录
    2:installutil.exe这个文件也可以复制到当前服务目录,写法就可以用 %~dp0\installutil.exe %~dp0\yourService.exe 了
    3:设置服务为自动运行

    卸载

    %~dp0\InstallUtil.exe %~dp0\yourService.exe -u
    pause



  • 相关阅读:
    关于OS命令注入的闭合问题
    PostgreSQL远程连接配置
    IBatis 配置各种数据库
    iOS开发--图片轮播
    iOS开发--UILabel根据内容自动调整高度
    iOS开发--底部按钮和应用图标显示未读消息
    常用软件安装及VS插件工具
    Git入门
    部署时,出现用户代码未处理 System.Security.Cryptography.CryptographicException 错误解决方法
    .NET 互联网技术简介
  • 原文地址:https://www.cnblogs.com/idoudou/p/2265025.html
Copyright © 2011-2022 走看看