0

我知道如何访问管理对象。让我们说这个:

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");            
foreach (var nic in searcher.Get())
{                
    Console.WriteLine(nic["caption"]);
}

现在这个 nic[]-synthax 不好用。如果我看一下我看到的 Visual Studios 服务器资源管理器,它会为我选择的每个对象填充一个属性网格。闻起来像是他们在那里创建可绑定的类。是否有任何库或方法可以做到这一点?我想获得类似的语法

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");            
foreach (var nic in searcher.Get())
{                
    Console.WriteLine((nic as Win32NetworkAdapter).Caption);
}

我只是不想浪费我的时间来实现已经发明的新东西!

4

3 回答 3

2

为什么不使用Visual Studio 中的Mgmtclassgen.exe(管理强类型类生成器) ?

于 2012-02-03T18:55:07.023 回答
1

WMI 接受一个查询并返回一组不确定的结果。该查询类似于 SQL,因此它可能只返回某些列。属性网格只是将每个返回值枚举为单独的名称和值。没有为任何查询结果设置固定列。出于这个原因,您需要从返回的列表中显式地获取每一个。

于 2011-11-21T16:35:28.400 回答
0

只是为了让其他人像我一样开心,我创建了一个 T4 来解决我的问题。它记录在http://www.codingfreaks.de/2011/11/22/t4-fur-wmi-zugriff/(德语!!!),可以在http://www.codingfreaks.de/files获得/wmi01/WmiHelper.tt。为了让它发挥作用,只需

  1. 在 VS 中将其添加到您的项目中。
  2. 添加一个名为“Classes.txt”的文本文件。
  3. 在“Classes.txt”(例如“Win32_NetworkAdapter”)中为要使用的每个 WMI 类添加一行
  4. 右键单击项目中的tt文件并使用“用户定义的工具”。
  5. 转到您的代码并键入 WmiHelper。*

享受!

于 2011-11-22T17:22:12.097 回答