我无法使用WMI查询从我的应用程序中的某个硬盘驱动器中获取正确的温度,不知何故,我的两个硬盘驱动器中的一个得到0作为温度,而另一个返回常规温度,如34摄氏度。
这是我的方法:
public static void GetTemps()
{
const byte TEMPERATURE_ATTRIBUTE = 194;
try
{
int counter = 1;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
foreach (ManagementObject queryObj in searcher.Get())
{
byte[] arrVendorSpecific = (byte[])queryObj["VendorSpecific"];
System.Windows.Forms.MessageBox.Show("DRIVE: " + (counter + ("=" + arrVendorSpecific[TEMPERATURE_ATTRIBUTE + 5])));
counter++;
}
}
catch (ManagementException err)
{
System.Windows.Forms.MessageBox.Show(("An error has occurred: " + err.Message));
}
也许最奇怪的部分是,这段代码不久前曾用过,虽然它时不时会出现0。