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

时间:2014-10-13 03:10:05

标签: c# service windows-services

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

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

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

,它也不会启动。

我已经尝试更改"自动(延迟启动)"但没有改变。

我将不胜感激。

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

由于

2 个答案:

答案 0 :(得分:1)

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服务都以相同的方式开发。这个也很好。

答案 1 :(得分:0)

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

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