1

我正在尝试在 C# 中获取 NetTcpActivator 和 NetPipeActivator 服务的状态。

我使用这段代码列出了所有带有 ServiceController 的服务:

  ServiceController[] services = ServiceController.GetServices();

     foreach (ServiceController service in services)
     {
        string name = service.ServiceName;
        string status = service.Status.ToString();

     }

我进行了调试,但我从未看到这两个服务。

如果我在 Windows 中进入我的服务,我确实看到了这两个服务。如果我进入注册表并查找 SYSTEM\CurrentControlSet\services,我确实看到了 NetTcpActivator 和 NetTcpPortSharing。但是在注册表中,我看不到服务的状态。

知道为什么我看不到带有 ServiceController 的服务吗?如果它不会显示在 ServiceController 中,知道如何获取服务状态吗?

谢谢

4

1 回答 1

1

我假设您正在迭代所有服务以进行调试,但您可以使用简单的 LINQ 语句来获取您需要的服务。

我能够做到这些并获得服务:

var netTcpActivatorService = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "NetTcpActivator");

var netPipeActivatorService = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "NetPipeActivator");
于 2013-10-24T17:58:07.527 回答