首页 > 解决方案 > C# 如何获取/读取 CPU 电压 (Windows)

问题描述

我试图获得 CPU 电压但没有任何成功。我尝试了 OpenMonitorHardware,但似乎没有电压传感器

public float GetCpuVoltage() {
        Computer computer = new Computer(){ CPUEnabled = true };
        computer.Open();
        foreach(IHardware hardware in computer.Hardware) {
            hardware.Update();
            if(hardware.HardwareType == HardwareType.CPU) {
                foreach(ISensor sensor in hardware.Sensors) {
                    if(sensor.SensorType == SensorType.Voltage) {
                        return (float)sensor.Value;
                    }
                }
            }
        }
        computer.Close();
}

If 语句永远不会为真,因为它只找到温度、功率和时钟速度传感器。

再次尝试使用 Win32_Processor 和 Win32_Mainboard 并且几乎每个可能包含它的 Win32_XXX 都没有成功。那里要么没有价值,要么文档错误/旧,您可以传入的值是错误的并发出错误。我得到的最接近的是这里的代码

foreach(ManagementBaseObject core in new ManagementObjectSearcher("Select * from Win32_Processor").Get()) {
    var voltage = core["CurrentVoltage"];
}

我得到的值是“10”,这甚至没有意义。我首先认为它可能会被四舍五入,所以 1,357 可能会被四舍五入到 1,但无论我尝试什么,它都不是一个实心的 10。

经过数小时的尝试和谷歌搜索后,我不知道该尝试什么了,我什至尝试从 Open Hardware Monitor 下载源代码,因为在他们的程序中它可以工作,但它太复杂了,我无法完全指出起源以及他们如何获得价值.

如果有人需要,我拥有 I5-8600k 和华硕 Z390 TUF GAMING-Plus,超级 IO 控制器是 Nuvoton NCT6798D,它应该包含我需要的信息。

请原谅任何打字错误并感谢您提前提供帮助

标签: c#windowshardwareopenhardwaremonitor

解决方案


推荐阅读