安装后自动启动服务

Posted

技术标签:

【中文标题】安装后自动启动服务【英文标题】:Starting service automatically after installation 【发布时间】:2016-02-24 11:09:23 【问题描述】:

这是一个使用 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 事件中调用它。

【问题讨论】:

【参考方案1】:

终于想通了。我的Start() 呼叫实际上失败了,直到我进入事件查看器时我才注意到。错误消息类似于:

Your process does not have access rights to this namespace

在谷歌上搜索错误消息会出现another SO post,其中接受的答案对我有用。希望这对以后的人有所帮助。

【讨论】:

以上是关于安装后自动启动服务的主要内容,如果未能解决你的问题,请参考以下文章

sc安装后如何自动启动windows服务?

SQL启动srever时报,启动后有自动停止,一些组件无法启动,为啥?

如何自动启动窗口服务

设置Django生产环境系统重启后的自动启动项

CentOS设置服务开机启动的方法

SQL Server(SQLEXPRESS)服务启动后会自动停止服务 该怎么解决