以前做了个获取服务器硬件信息的功能,当时随便搜了下,搜到一个例子,在几个机子上都运行了下,一切正常,于是乎就放到项目中去了,不过总感觉别扭,因为用到了系统的API,还得构造枚举。找了找原来C#有封装的好好的,C#提供了ManagementClass类(命名空间System.Management),MSDN官方资料 ,官方的例子可以获得磁盘驱动器模块的方法、属性和限定符。
如下就可以将所有的属性名信息以及值都打印出来,格式为 属性名:属性值。
string path = "Win32_LogicalDisk";
ManagementClass managementClass = new ManagementClass(path);
ManagementObjectCollection mn = managementClass.GetInstances();
PropertyDataCollection properties =managementClass.Properties;
Console.WriteLine(path);
foreach (PropertyData property in properties)
{
Console.Write(property.Name+" : ");
foreach (ManagementObject m in mn)
{
Console.WriteLine(m.Properties[property.Name].Value);
}
}
然后所要做的就是找出相应模块的path,可参考枪手亨利 和幸小勇 的两篇文章,前者是大全但注释偏少,后者是常用的且注释比较全。