少なくとも CPU 側では、WMI を使用できます。
名前空間\オブジェクトはroot\WMI, MSAcpi_ThermalZoneTemperature
サンプルコード:
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSAcpi_ThermalZoneTemperature");
ManagementObjectCollection collection =
searcher.Get();
foreach(ManagementBaseObject tempObject in collection)
{
Console.WriteLine(tempObject["CurrentTemperature"].ToString());
}
これにより、生の形式で温度が得られます。そこから変換する必要があります:
kelvin = raw / 10;
celsius = (raw / 10) - 273.15;
fahrenheit = ((raw / 10) - 273.15) * 9 / 5 + 32;