You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenHardwareMonitor仅显示负载传感器,无法获取CPU温度与电压求助

问题:C#调用OpenHardwareMonitor无法获取CPU温度与电压传感器数据

我尝试用C#代码调用OpenHardwareMonitor获取所有传感器数据,但目前只能拿到CPU各核心及总负载类型的传感器,无法获取CPU温度和电压传感器。OpenHardwareMonitor官方应用可以正常查看全部传感器,我试过多种教程,也遍历了子硬件,但都没效果。

我的代码

{
    Computer myComputer = new Computer();
    myComputer = new Computer()
    {
        CPUEnabled = true
    };

    myComputer.Open();
    Trace.WriteLine("");
    foreach (var hardwareItem in myComputer.Hardware)
    {
        if (hardwareItem.HardwareType == HardwareType.CPU)
        {
            hardwareItem.Update();
            foreach (IHardware subHardware in hardwareItem.SubHardware)
                subHardware.Update();

            foreach (var sensor in hardwareItem.Sensors)
            {
                Debug.WriteLine(sensor.Name + " " + sensor.SensorType + " " + sensor.SensorType);
            }
        }
    }
}

当前输出结果

CPU Core #1 Load Load
CPU Core #2 Load Load
CPU Core #3 Load Load
CPU Core #4 Load Load
CPU Core #5 Load Load
CPU Core #6 Load Load
CPU Core #7 Load Load
CPU Core #8 Load Load
CPU Core #9 Load Load
CPU Core #10 Load Load
CPU Core #11 Load Load
CPU Core #12 Load Load
CPU Core #13 Load Load
CPU Core #14 Load Load
CPU Core #15 Load Load
CPU Core #16 Load Load
CPU Total Load Load

解决方法

1. 启用必要的硬件监控权限

OpenHardwareMonitor需要显式启用对应硬件的监控开关,仅开启CPUEnabled不足以获取温度、电压数据——这类传感器常依赖主板监控模块。修改Computer初始化代码:

Computer myComputer = new Computer()
{
    CPUEnabled = true,
    MotherboardEnabled = true, // 启用主板监控,多数CPU温度传感器挂载于此
    SensorsEnabled = true      // 显式启用传感器集合
};

2. 遍历所有硬件及子硬件的传感器

部分CPU的温度、电压传感器不会直接归类到HardwareType.CPU下,而是属于主板子硬件或其他关联组件。调整遍历逻辑,不要仅过滤CPU硬件:

myComputer.Open();
foreach (var hardwareItem in myComputer.Hardware)
{
    hardwareItem.Update();
    // 更新并遍历子硬件的传感器
    foreach (var subHardware in hardwareItem.SubHardware)
    {
        subHardware.Update();
        foreach (var sensor in subHardware.Sensors)
        {
            if (sensor.SensorType is SensorType.Temperature or SensorType.Voltage)
            {
                Debug.WriteLine($"{sensor.Name} | {sensor.SensorType} | 数值: {sensor.Value?.ToString("F2")}");
            }
        }
    }
    // 遍历当前硬件的传感器
    foreach (var sensor in hardwareItem.Sensors)
    {
        if (sensor.SensorType is SensorType.Temperature or SensorType.Voltage)
        {
            Debug.WriteLine($"{sensor.Name} | {sensor.SensorType} | 数值: {sensor.Value?.ToString("F2")}");
        }
    }
}

3. 以管理员权限运行程序

读取硬件传感器需要系统管理员权限,普通权限会限制底层硬件访问。可以:

  • 右键程序选择「以管理员身份运行」
  • 在项目的app.manifest中修改权限配置:
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
    

4. 核对版本与驱动

  • 确保引用的OpenHardwareMonitor库版本和官方应用一致,避免版本兼容问题
  • 检查并更新CPU、主板芯片组的官方驱动,缺失驱动会导致传感器无法被识别

内容的提问来源于stack exchange,提问作者Michael Canseco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:32:21