zoukankan      html  css  js  c++  java
  • Windows服务安装完成后自动启动

    public ServiceInstaller()
    {
        //... Installer code here
        this.AfterInstall += new InstallEventHandler(ServiceInstaller_AfterInstall);
    }
    
    void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
    {
        using (ServiceController sc = new ServiceController(serviceInstaller.ServiceName))
        {
             sc.Start();
        }
    }
    
    注意配置为本地服务和自动启动模式。。。

    using System.ComponentModel; using System.Configuration.Install; using System.ServiceProcess; namespace Example.of.name.space { [RunInstaller(true)] public partial class ServiceInstaller : Installer { private readonly ServiceProcessInstaller processInstaller; private readonly System.ServiceProcess.ServiceInstaller serviceInstaller; public ServiceInstaller() { InitializeComponent(); processInstaller = new ServiceProcessInstaller(); serviceInstaller = new System.ServiceProcess.ServiceInstaller(); // Service will run under system account processInstaller.Account = ServiceAccount.LocalSystem; // Service will have Start Type of Manual serviceInstaller.StartType = ServiceStartMode.Automatic; serviceInstaller.ServiceName = "Windows Automatic Start Service"; Installers.Add(serviceInstaller); Installers.Add(processInstaller); serviceInstaller.AfterInstall += ServiceInstaller_AfterInstall; } private void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e) { ServiceController sc = new ServiceController("Windows Automatic Start Service"); sc.Start(); } } }

    这种通过进程 命令的方式也行,但是不太好

    /// <summary>
            /// 安装后自动启动服务
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
            {
                Process p = new Process
                {
                    StartInfo =
                    {
                        FileName = "cmd.exe",
                        UseShellExecute = false,
                        RedirectStandardInput = true,
                        RedirectStandardOutput = true,
                        RedirectStandardError = true,
                        CreateNoWindow = true
                    }
                };
                p.Start();
                const string cmdString = "sc start 你的服务名称"; //cmd命令, 服务的名称
                p.StandardInput.WriteLine(cmdString);
                p.StandardInput.WriteLine("exit");
            }
  • 相关阅读:
    容器适配器
    告别格式工厂的视频格式转换方法(mac版 命令行)
    配置CentOS7的网络为固定IP
    Java 多线程学习--线程池
    Java多线程学习--[转]
    使用VLC接收RTP流并时时播放(RTP流是pcma包)
    [转载好文]Linux下编写 makefile 详细教程
    [转载]简明 VIM 练级攻略
    linux删除不了文件, 修改文件属性也删除不了的一个解决思路
    SHELL脚本“syntax error: unexpected end of file”解决方案[半原创]
  • 原文地址:https://www.cnblogs.com/micro-chen/p/5576810.html
Copyright © 2011-2022 走看看