Windows 2016:ServiceController.DisplayName在Windows Start上返回ServiceController.ServiceName

时间:2018-05-04 14:12:26

标签: c# windows-services windows-server-2016

我有一个服务(Main),负责处理其他Windows服务。它决定需要停止,启动哪些服务等。

主服务通过DisplayNames控制其他服务。 在Windows启动时,它从配置中读取DisplayNames并威胁其他服务。

在Windows 2016上,启动服务需要一些时间,ServiceControl.DisplayName返回ServiceController.ServiceName,因此主服务无法从配置中找到服务。

是否存在一些解决方法来解决此问题?

2 个答案:

答案 0 :(得分:0)

我想,您是否可以尝试等待特定状态?

例如

ServiceController.WaitForStatus(ServiceControllerStatus.Running);将等到其状态为" 正在运行"。它暂停了应用程序的处理,直到服务达到所需状态。 这是documentation

另外,您可以在C#中查看this文章 - ServiceController。

让我知道它是否有效。

答案 1 :(得分:0)

显示名称,顾名思义,是为了显示。它们并不意味着进行比较,而是用于确定匹配。

对于程序与程序的交互,应该使用服务名称。

所以你的问题是基于一个不好的前提 - 显示名称是稳定的,可以依赖。无论看起来如何令人反感,您需要重新设计系统,使其不依赖于显示名称。