我有一个Windows Service,可以使用InstallUtil.exe安装。即使将“启动方法”设置为“自动”,该服务在安装后也不会启动,我必须手动打开服务并单击“启动”。是否可以通过命令行或服务代码启动它?

最佳答案

在您的Installer类中,为AfterInstall事件添加一个处理程序。然后,您可以在事件处理程序中调用ServiceController来启动服务。

using System.ServiceProcess;
public ServiceInstaller()
{
    //... Installer code here
    this.AfterInstall += new InstallEventHandler(ServiceInstaller_AfterInstall);
}

void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
    ServiceInstaller serviceInstaller = (ServiceInstaller)sender;

    using (ServiceController sc = new ServiceController(serviceInstaller.ServiceName))
    {
             sc.Start();
    }
}

现在,当您在安装程序上运行InstallUtil时,它将安装并自动启动服务。

10-07 16:24