Jak uzyskać temperaturę procesora?

Muszę zebrać informacje o systemie dla aplikacji, którą tworzę. Dostępna pamięć i obciążenie procesora są łatwe do uzyskania przy użyciu C #. Niestety, temperatura procesora nie jest taka prosta. Próbowałem użyć WMI, ale nie mogłem niczego użyć

Win32_TemperatureProbe

lub

MSAcpi_ThermalZoneTemperature

Czy ktoś już zajmował się tym problemem? Zastanawiam się, jak programy monitorujące, jak SiSoftware Sandra, mogą uzyskać te informacje ...

Na wszelki wypadek, jeśli ktoś jest zainteresowany, oto kod klasy:

public class SystemInformation
{
    private System.Diagnostics.PerformanceCounter m_memoryCounter;
    private System.Diagnostics.PerformanceCounter m_CPUCounter;

    public SystemInformation()
    {
        m_memoryCounter = new System.Diagnostics.PerformanceCounter();
        m_memoryCounter.CategoryName = "Memory";
        m_memoryCounter.CounterName = "Available MBytes";

        m_CPUCounter = new System.Diagnostics.PerformanceCounter();
        m_CPUCounter.CategoryName = "Processor";
        m_CPUCounter.CounterName = "% Processor Time";
        m_CPUCounter.InstanceName = "_Total"; 
    }

    public float GetAvailableMemory()
    {
        return m_memoryCounter.NextValue();
    }

    public float GetCPULoad()
    {
        return m_CPUCounter.NextValue();
    }

    public float GetCPUTemperature()
    {
        //...
        return 0;
    }
}

questionAnswers(8)

yourAnswerToTheQuestion