ManagementClass是否加载了所有属性?

时间:2018-04-12 18:29:29

标签: c# .net wmi

使用ManagementObjectSearcher时,可以搜索特定属性(而不是*)。

实例化ManagementClass(即new ManagementClass(someClass))时会发生什么,它是加载所有属性还是只是某种指针,并且不会加载属性?

(我也很高兴知道将ManagementObjectSearcher*一起使用会发生什么,它是否会加载除属性之外的任何内容,或者就像指定所有属性一样它们是明确的吗?逻辑上,它应该只是意味着"所有",但是从here看起来不是这样。)

1 个答案:

答案 0 :(得分:1)

实例化时没有任何反应。它只是stores the query, scope and whatever else you may have specifiedManagementObjectSearcher

也是如此

致电.Get()the query is executed against the current scope时。至于ManagementObjectSearcher,实际行为取决于它是class enumeration or instance enumeration (e.g. a query)

执行查询并直接返回结果(任何属性),而类枚举将绑定到基础WMI对象without actually loading anything,直到您在某处调用.Get()

  

是否加载所有属性,或者只是某种指针

它是pointerCIM Object Manager。仅在initialize is called with true(表示您要绑定到基础WMI对象)时加载基础对象。这是执行查询的内容。

查看对Initialize()的各种调用,乍一看似乎只有在您请求属性或限定符时才绑定对象。调用方法不会绑定它们。

  

我也很高兴知道在使用带有*

的ManagementObjectSearcher时会发生什么

在执行查询之前没有任何内容。默认情况下,该对象执行shallow enumeration。除了属性之外,这可能会返回限定符,但我并不完全确定。

同样有趣(包括兄弟文章):https://technet.microsoft.com/en-us/library/cc180561.aspx

我希望这有点帮助:)