-2

我知道,有很多关于如何获得这个值的教程。但我尝试了很多。我发现了一件很酷的事情,你实际上可以通过性能监视器获得一些 pc 的值(就像在这个视频中一样),我知道如何得到它们,但是他在这里怎么说性能监视器上没有 cpu temp 的值。

所以我发现了另一个超酷的东西,windows 10 的硬件类。再次搜索是这样的:Win32_TemperatureProbe class

但我找不到教如何获取值的教程。在阅读了所有 Win32_TemperatureProbe 类之后,我发现我需要的是 CurrentReading,我想......所以现在我在我的项目中(在 Visual Studio 中)创建了一个计时器,每 1000 毫秒他从性能监视器中获取一些其他值.. . 到目前为止什么都没有。但正如我所说,性能监视器不采用 cpu temp。所以我想通过 Win32_TemperatureProbe 类来获取它。我该怎么做?(我把它都写下来了,所以你不会认为我没有做出任何努力)。

我按照本教程进行操作:httpsWin32_UserAccount ://youtube.com/watch?v=W7vPgAqC4fI&ab_channel=CampNerd 我用CurrentReading更改Win32_TemperatureProbe了他的标题...

他的功能修改:

private string GetTemp() {
    ManagementObjectSearcher s = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_TemperatureProbe");
    foreach (ManagementObject wmi in s.Get()) {
        try
        {
            return wmi.GetPropertyValue("CurrentReading").ToString();
        }
        catch { }
    }
    return "err";
}

它总是返回我“错误”。

所以我想知道,例如,MSI Afterburner 程序如何获取温度......

我也试过:https ://youtube.com/watch?v=JgsHfc-4TUE&ab_channel=SMBitSimplified但它已经开始了

4

1 回答 1

0

正如我在评论中所说,节点的CurrentReading属性Win32_TemperatureProbe没有实现(参见文档中的第一段)。

一般来说,读取温度是一件很痛苦的事情,因为对于许多系统来说,温度信息只会到达系统(内核)的 Ring0,您将无法访问它。Windows 中的温度管理由 ACPI 固件和内核热管理框架处理,它们无需驱动程序即可直接通信,也可以由自定义温度传感器驱动程序处理。

但是您不会找到任何有关如何访问该驱动程序的文档。因为它因 CPU 与 CPU 以及主板与主板而异。

您最好的选择可能是使用Open Hardware Monitor。是的,它是一个软件,它还安装了一个 WMI 节点,您可以从中读取温度和其他硬件信息(请参阅此处的文档)。这就是你想要使用的。因此,安装 Open Hardware Monitor 并查看 WMI 节点“root\OpenHardwareMonitor”,您应该能够在其中读取信息。

于 2021-09-14T07:10:59.490 回答