检查未注册/缺少的服务

时间:2009-10-13 15:11:05

标签: c# windows-services service servicecontroller

如何使用ServiceController告诉我服务是否已注册?在下面的代码片段中,检查null DisplayName会导致System.InvalidOperationException。

有没有一种直截了当的做法让我完全失踪?

ServiceController sc = new ServiceController("TestService");

if (sc.DisplayName == null)
{
     // unregistered or missing service
}

1 个答案:

答案 0 :(得分:3)

请看下面的解决方案...... 您似乎无法......

来自docs

  

您可以使用ServiceController   连接和控制的类   现有服务的行为。

必须已经注册了类似于服务的读取,以便ServiceController与它们一起使用。

我想你可以简单地捕获异常(表明该服务不存在),但这似乎并不是真的例外吗?

解决方案:

使用

var services = ServiceController.GetServices(machineName)

并在数组中搜索所需的服务。如果您只是在本地框上工作,则可以省略machineName参数。

http://msdn.microsoft.com/en-us/library/s21fd6th.aspx