How to get CPU temperature in C#
By FoxLearn 7/1/2024 9:58:08 AM 296
This method is more native to Windows but may not always provide CPU temperature information depending on the system and hardware support.
Although not every motherboard includes a built-in temperature monitor, you can potentially retrieve this information if it's available through Windows Management Instrumentation (WMI). Specifically, you can query the MSAcpi_ThermalZoneTemperature class, which is commonly used for accessing CPU temperature data on some systems.
Additionally, the Win32_TemperatureProbe
WMI class provides properties related to temperature sensors, which are essentially electronic thermometers. Most of the information provided by Win32_TemperatureProbe
comes from the System Management BIOS (SMBIOS). However, real-time temperature readings for the CurrentReading
property cannot be directly extracted from SMBIOS tables.
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature"); ManagementObjectCollection objCollection = searcher.Get(); foreach (ManagementObject obj in objCollection) { double temperature = Convert.ToDouble(obj["CurrentTemperature"].ToString()); temperature = (temperature - 2732) / 10.0; // Convert to Celsius Console.WriteLine($"CPU Temperature: {temperature}°C"); }
This example queries the MSAcpi_ThermalZoneTemperature
class in WMI, which is commonly used to retrieve CPU temperature information on some systems. It converts the temperature from Kelvin to Celsius and prints it.