我有一个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时,它将安装并自动启动服务。