如何在C#中自动启动windows服务

本文关键字:自动启动 windows 服务 | 更新日期: 2023-09-27 18:26:16

我已经制作了一个windows服务,它应该在windows启动时自动启动,但由于某种原因,它不起作用。我使用了以下代码:

private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
    {
        using (ServiceController sc = new ServiceController(serviceInstaller1.ServiceName))
        {
            sc.Start();
        }
    }

使用InstallUtil.exe安装服务后,它会自动启动,但如果我重新启动,即使服务管理器中的配置为"自动",它也不会启动。

我已经尝试更改为"自动(延迟启动)",但没有任何更改。

我很感激你的建议。

抱歉我英语不好,我不是本地人。

感谢

如何在C#中自动启动windows服务

namespace curUsers
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
    public ProjectInstaller()
    {
        var processInstaller = new ServiceProcessInstaller();
        var serviceInstaller = new ServiceInstaller();
        //set the privileges
        processInstaller.Account = ServiceAccount.LocalSystem;
        serviceInstaller.DisplayName = "curUsers";
        serviceInstaller.StartType = ServiceStartMode.Automatic;
        //must be the same as what was set in Program's constructor
        serviceInstaller.ServiceName = "curUsers";
        this.Installers.Add(processInstaller);
        this.Installers.Add(serviceInstaller);
    }
    private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
    {
    }
    private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e)
    {
    }
}
}

试一下,我所有的windows服务都是以相同的方式开发的。这个也很好用。

我不久前构建了几个windows服务。也许这将有助于解决您的问题

// serviceInstaller1
 // 
 this.serviceInstaller1.ServiceName = "whoisthere";
 this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
 this.serviceInstaller1.AfterInstall += new System.Configuration.Install.InstallEventHandler(this.serviceInstaller1_AfterInstall);