【发布时间】:2012-06-05 20:41:52
【问题描述】:
我可以使用 PowerShell 相当轻松地做到这一点,但我正在寻找一种 C# 方法来做到这一点。使用 PS,我可以使用 Get-Service 遍历集合并检查其中称为 DependentServices 和 RequiredServices 的集合,以获取给定服务的依赖和必需服务的列表。
我已经使用查询“Select * from Win32_Service”查看了 WMI 模型,但这会返回一个 Win32_Service 对象的集合,这些对象似乎没有我感兴趣的集合。我觉得我错过了这里有东西。我环顾四周并尝试了各种搜索,但我没有找到以 C# 为中心的方法。
我想查询给定的服务并取回上面提到的集合(DependentServices 和 RequiredServices)。对不起,如果我错过了明显的,但我真的无法找到相关的主题。
【问题讨论】:
-
我发现一个特定的 Windows 服务有一个奇怪的行为,我觉得值得分享。我的笔记本电脑上的 NetMsmqActivator 服务(已禁用)在 services.msc 接口中显示没有服务依赖关系。但是,当使用 ServiceController 类获取 ServicesDependedOn 集合时,您会在该集合中获得 2 个项目,当您尝试访问它们的属性时会引发 InvalidOperationException。很奇怪,但值得一提。我不知道修复会是什么,所以,现在,我正在吃异常。
-
我发现的另一个有趣且可能令人沮丧的异常是在我笔记本电脑上的联想“ThinkVantage System Update”包中。此安装似乎已损坏,并在迭代集合时会导致问题。例如,我不知道如果没有为 MSI 设置制造商属性,安装是否会成功,但 ThinkVantage System Update 似乎就是这样做的。仍在充实这一点,但我已删除并重新安装了电视系统更新包,结果相同。
标签: c# windows-services wmi