首页 > 解决方案 > 为什么 ThermalZoneInformation 不返回真实温度?

问题描述

复制(或不复制):

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class MyWMIQuery
    {
        public static void Main()
        {
            try
            {
                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\CIMV2", 
                    "SELECT * FROM Win32_PerfFormattedData_Counters_ThermalZoneInformation"); 

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Win32_PerfFormattedData_Counters_ThermalZoneInformation instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("HighPrecisionTemperature: {0}", queryObj["HighPrecisionTemperature"]);
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }
        }
    }
}

或:(这也是获取此代码的方法)

  1. 从此处下载 Microsoft WMI 代码创建器: https ://www.microsoft.com/en-us/download/details.aspx?id=8572
  2. 在“类(动态或静态)”中向下滚动到: Win32_PerfFormattedData_Counters_ThermalZoneInformation
  3. HighPrecisionTemperature在下一个框中选择。
  4. 单击Search for Property Values按钮。

我的结果总是:3030、3010 和 2900 [我知道这些是开尔文度数的十分之一。问题是代码总是返回这些值,尽管温度显然不会保持不变(并且达到十分之一摄氏度!)。]

什么可能导致系统总是返回这些结果而不是真实结果?

处理器:i5 9600K

主板:技嘉B365

标签: c#.netwinapiwmihardware

解决方案


推荐阅读