获取windows系统信息
在应用程序中,有时需要在界面中显示计算机的硬件信息和进程信息。在.Net中提供了可以查询信息的类。Management类,在程序中添加应用后进行使用。
1 属性
类似的属性介绍可见下面:
属性介绍
根据以上的属性介绍可以查询常见的信息,比如内存,硬件等等。当然在内存信息中还有分类,在上述属性介绍中也有,同样通过代码也是可以获取。
2 编写流程
a 初始化
ManagementClass SystempMeg = new ManagementClass(syetemType);
其中systtemtype就是上面属性介绍:
Win32_Processor:获取cpu信息。
Win32_OperatingSystem:内存信息。等等可以打开上述链接查询
b 获取信息中属性
在内存信息中需要查询可用内存大小和未使用的,所以需要获取属性名称。
可通过程序进行获取,如下:
ManagementObjectSearcher MySearch = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); SystempMeg.Options.UseAmendedQualifiers = true; PropertyDataCollection properties = SystempMeg.Properties; foreach (PropertyData property in properties) { WriteMegLog( "---------------------------------------"); WriteMegLog(property.Name); WriteMegLog("Description: " + property.Qualifiers["Description"].Value); } //c 获取属性值 //在知道有关属性关键词后,下面就是获取属性值 foreach (ManagementObject c in MySearch.Get()) { WriteMegLog("Value: "); WriteMegLog( c.Properties[property.Name.ToString()].Value.ToString()); }
在通过函数获取Mysearch后,再进行查询。为此结束。
3 代码片
ManagementClass SystempMeg; public SystemMessage (string syetemType) { SystempMeg = new ManagementClass(syetemType); } public void GetCpuSystemMeg() { if (SystempMeg != null) { ManagementObjectSearcher MySearch = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"); foreach (ManagementObject MyObject in MySearch.Get()) { WriteMegLog("CPU处理器系列类型:"); WriteMegLog(MyObject.Properties["Family"].Value.ToString()); WriteMegLog("该处理器的最大速度(以兆赫为单位):"); WriteMegLog(MyObject.Properties["MaxClockSpeed"].Value.ToString()); WriteMegLog("CPU的当前状态为:"); WriteMegLog(MyObject.Properties["CpuStatus"].Value.ToString()); WriteMegLog("CPU处理器的当前速度(以兆赫为单位):"); WriteMegLog(MyObject.Properties["CurrentClockSpeed"].Value.ToString()); } MySearch.Dispose(); SystempMeg.Dispose(); } }
4 注意
在获取属性值,有的属性值无法获取,现在还没找到原因,比如获取当前网速。