我正在尝试获取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,其中应该包含我需要的信息。
请原谅任何打字错误,并感谢您提前提供帮助>>
我正在尝试获取CPU电压,但没有成功。我尝试过OpenMonitorHardware,但似乎没有电压传感器公共浮动GetCpuVoltage(){Computer computer = ...
您可以使用以下代码: