安装后自动启动服务

本文关键字:服务 自动启动 安装 | 更新日期: 2023-09-27 18:23:45

这是一个使用VS2015和.NET Framework 4.5的Windows服务项目。

我试图通过构建后操作安装我的服务,然后使用ServiceController.Start()自动启动它。这是我尝试启动服务的代码:

private void ProjectInstaller_Committed(object sender, InstallEventArgs e)
{
  using (var sw = new System.IO.StreamWriter(Console.OpenStandardOutput()))
  {
    using (ServiceController sc = new ServiceController(serviceInstaller1.ServiceName))
    {
      try
      {
        sw.Write("Starting service...");
        sc.Start();
        sc.WaitForStatus(ServiceControllerStatus.Running);
        sw.Write("Service status is now set to {0}.", sc.Status.ToString());
      }
      catch (InvalidOperationException)
      {
        sw.Write("Could not start the service.");
      }
    }
  }
}

该服务安装得很好,但我的ServiceController.WaitForStatus()呼叫似乎一直在等待。我已尝试从CommittedAfterInstall事件调用它。

安装后自动启动服务

终于想通了。我的Start()调用实际上失败了,直到我转到事件查看器时才注意到这一点。错误消息类似于:

Your process does not have access rights to this namespace

在谷歌上搜索错误消息后,又出现了一个SO帖子,接受的答案对我来说很有用。希望这能帮助到以后的人。