WMI名称空间是类的实例吗?

时间:2015-09-03 13:12:55

标签: c# wmi wmi-query system.management

我一直在用C#编写一个程序来清除WMI中的信息作为一个项目(我知道很多很棒的工具已经存在,但这既适用于我所管理的环境的学习和定制),而且我遇到了一些奇怪的事情。目前绊倒我的是以下片段:

'using System.Management;

ManagementClass managementClass = new ManagementClass(new ManagementPath(@"\\" + pHostName + @"\root\" + pNameSpace));

EnumerationOptions enumOptions = new EnumerationOptions();
enumOptions.EnumerateDeep = false;

foreach(ManagementObject wmiClass in managementClass.GetSubclasses())
{
    Console.WriteLine(wmiClass["__Class"].ToString());
}'

鉴于MSDN文档和VS文档下的System.Management.ManagementClass的定义,我将非常重视它代表一个CIM类,以及返回的GetSubclasses()方法的定义一个类下的所有子类的集合(在一个类下面是关键短语),我可以做出的唯一合乎逻辑的结论是,WMI中的命名空间实际上是一个类的实例,这听起来非常错误。

命名空间实际上是WMI中的类的实例吗?如果没有,有没有人知道为什么在命名空间上使用ManagementClass允许类清理?使用的语言让我很困惑。

编辑:在这里回答这个问题。下面的Hans Passant指出IWBEMPath是问题的原因,并且由于IWbemPath,命名空间被ManagementPath视为目录和类,后者用于实例化ManagementClass的新实例。谢谢汉斯!

0 个答案:

没有答案