我试图获得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向下舍入为一个,但不是稳定的10。
经过数小时的尝试,我什至不知道该怎么做,我什至尝试从Open Hardware Monitor下载源代码,因为在他们的程序中它可以工作,但是对于我来说太复杂了,无法完全指出其起源以及它们如何获得价值。
如果有人需要我拥有I5-8600k,华硕Z390 TUF GAMING-Plus,而超级IO控制器是Nuvoton NCT6798D,其中应该包含我需要的信息。
请原谅任何输入错误,并感谢您的提前帮助
如果您转至此页面,将其签出,然后按照它进行操作,您将会有所了解。
https://stackoverrun.com/ko/q/37087