不支持通过Windows 8获取CPU温度

时间:2014-07-23 11:29:06

标签: c# windows-8 wmi

所以我一直试图使用WMI来获取CPU的温度一段时间。在我测试的两台机器中,带有英特尔处理器和Windows 7的机器运行得很好,其中AMD处理器和Windows 8.1的机器运行失败。我正在使用我在另一个问题上找到的简单片段,但问题是陈旧的,并且没有讨论Windows 8 / 8.1。这是片段:

public class Temperature
{
    public double CurrentValue { get; set; }
    public string InstanceName { get; set; }
    public static List<Temperature> Temperatures
    {
        get
        {
            List<Temperature> result = new List<Temperature>();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature");
            foreach (ManagementObject obj in searcher.Get())
            {
                Double temp = Convert.ToDouble(obj["CurrentTemperature"].ToString());
                temp = (temp - 2732) / 10.0;
                result.Add(new Temperature { CurrentValue = temp, InstanceName = obj["InstanceName"].ToString() });
            }
            return result;

        }
    }
}

但是,只要我调用searcher.Get(),它就会导致一个ManagementException,并显示消息“Not Supported。”

我知道我有所有必要的硬件要求,因为其他工具(Core temp和Speccy)会使温度恢复正常。

除此之外,我还开始研究Win32_TemperatureProbe,但这还没有完成。如果有人知道这方面的好参考资料,如果你愿意的话我会非常感激。

编辑:我正在使用.NET 3.5在Windows 8.1 x64上尝试此操作。该处理器是AMD FX8350,它与Gigabyte GA-990FXA-UD3主板连接。

0 个答案:

没有答案