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



  • 相关阅读:
    一些零碎小知识点积累随笔
    STM32学习笔记——新建工程模板步骤(向原子哥学习)
    记一次电信反射xss的挖掘与利用
    mysql字符串操作相关函数用法总结
    mysql学习笔记
    sigmoid function的直观解释
    多变量线性回归时使用梯度下降(Gradient Descent)求最小值的注意事项
    SAE中Python无法创建多线程的解决方案
    BCNF/3NF 数据库设计范式简介
    web.py下获取get参数
  • 原文地址:https://www.cnblogs.com/idoudou/p/2265025.html
Copyright © 2011-2022 走看看