¿Cómo puedo obtener la temperatura de la CPU?

Necesito recopilar información del sistema para la aplicación que estoy desarrollando. La memoria disponible y la carga de la CPU son fáciles de obtener usando C#. Desafortunadamente, la temperatura de la CPU no es tan fácil. He intentado usar WMI, pero no pude obtener nada usando

Win32_TemperatureProbe

o

MSAcpi_ThermalZoneTemperature

¿Cómo puedo hacer esto? Me pregunto cómo los programas de monitoreo, como SiSoftware Sandra, pueden obtener esa información …

Aquí está el código de la clase:

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;
    }
}
Respuestas:8 Respuestas 8
Tiempo:hace 13 años, 1 mes
Última modificación:hace 1 año, 3 meses

Solución

Para otros que puedan venir por aquí, tal vez echen un vistazo a: http://openhardwaremonitor.org/

Siga ese enlace y al principio podría pensar: «Oye, esa es una aplicación, y es por eso que se eliminó. La pregunta era cómo hacer esto desde el código C#, no para encontrar una aplicación que pueda decirme la temperatura…» Aquí es donde muestra que no está dispuesto a invertir suficiente tiempo en leer lo que también es «Open Hardware Monitor».

También incluyen una interfaz de datos. Aquí está la descripción:

Interfaz de datos El Monitor de hardware abierto publica todos los datos del sensor en WMI (Instrumental de administración de Windows). Esto permite que otras aplicaciones lean y utilicen la información del sensor también. Una documentación preliminar de la interfaz se puede encontrar aquí (clic).

Cuando lo descarga, contiene la aplicación OpenHardwareMonitor.exe, y no está buscando esa. También contiene el OpenHardwareMonitorLib.dll, y está buscando ese.

Es en su mayoría, si no 100%, solo un envoltorio alrededor de la API winring0, que puede elegir envolverse si lo desea.

He probado esto desde una aplicación de C# yo mismo, y funciona. Aunque todavía estaba en fase beta, parecía bastante estable. También es de código abierto, por lo que podría ser un buen punto de partida.

Otras respuestas

Estoy bastante seguro de que depende del fabricante, ya que se accederá a ellos a través de un puerto de E / S. Si tiene una placa específica con la que está tratando de trabajar, intente revisar los manuales y / o ponerse en contacto con el fabricante.

Si desea hacer esto para muchas placas diferentes, le recomiendo que se ponga en contacto con alguien en algo como SiSoftware o esté preparado para leer muchos manuales de la placa base.

Como otra nota, no todas las placas tienen monitores de temperatura.

También puede tener problemas para obtener acceso privilegiado desde el núcleo.

Deja un comentario