【问题标题】:How to check if windows service can be started?如何检查windows服务是否可以启动?
【发布时间】:2013-12-05 16:41:29
【问题描述】:

我创建了一个程序来检查是否有任何服务被停止。

但如果我禁用服务并尝试启动服务,则会发生异常。

如何查看服务是否可以启动或状态是否已禁用?

我正在使用 ServiceController 类。

代码:

ServiceController service = new ServiceController("serviceName");

if (!service.Status.Equals(ServiceControllerStatus.Running))
    service.Start();

【问题讨论】:

  • @MichaelPerrenoud netstat 与启动或停止服务有什么关系?
  • 一些代码?异常的详细信息?还是您认为 SO 是有洞察力的软件工程师的家?
  • 您不想禁用该服务,一旦禁用它就无法启动。您需要确保将服务设置为自动启动或延迟启动或手动才能启动它。打开服务,找到一个被禁用的服务,你会看到开始按钮是灰色的。
  • 我就知道你会这么说,@daveL。

标签: c# .net windows service windows-services


【解决方案1】:

要确定是否可以启动服务,请使用以下内容

ServiceController svc = new ServiceController("serviceName");

if  ((svc.Status.Equals(ServiceControllerStatus.Stopped)) ||
     (svc.Status.Equals(ServiceControllerStatus.StopPending)))
{
    try
    {
       svc.Start();
    }
    catch(Exception ex)
    {
       //log, abort, drink beer, etc
    }
}

检查除running 之外的任何内容都是有问题的,因为还有其他状态需要考虑。

检查服务是否被禁用有点复杂。查看this SO post

【讨论】:

  • 我认为存在这样做的最佳形式。但即使如此,我也会这样做。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多