如何在WinForms中使用C#检索CPU的温度

本文概述

  • 1.添加对System.Management类的引用
  • 2.检索CPU温度和实例名称
尽管不是每个主板都配置一个温度监控器, 但你可以通过Windows的WMI类从主板上获取此信息(如果有的话), 具体查询MSAcpi_ThermalZoneTemperature类。 Win32_TemperatureProbe WMI类代表温度传感器(电子温度计)的属性。 Win32_TemperatureProbe WMI类提供的大多数信息来自SMBIOS。无法从SMBIOS表中提取CurrentReading属性的实时读数。
在本文中, 我们将与你分享一种非常简单的方法, 该方法通过Windows的WMI类使用C#检索CPU的当前温度。
1.添加对System.Management类的引用 为了获得有关WinForms中带有C#的主板的信息, 你将需要访问System Management类:
using System.Management;

但是, 在某些Visual Studio版本中(特别是在2010年和更高版本中), 你需要在项目中手动添加引用(.DLL)。为此, 请按照下列步骤操作:
  1. 右键单击项目, 添加引用
  2. 选择” 程序集(框架)” 选项卡, 然后搜索System.Management, 最后添加引用, 然后单击” 确定” 。
如何在WinForms中使用C#检索CPU的温度

文章图片
我们需要添加System.Management来在WMI类中创建查询。在此处阅读有关在msdn中检索.NET中的WMI类的更多信息。
另一方面, 请记住, 所有使用ManagementObjectSearcher类来获取系统信息的实现, 其属性值为整数值(0-100), 并且这些值与属性名称无关(例如, 使用Video_Controller GPU类)返回0到9之间的值的Architecture属性), 并且你期望一个非常特定的值(例如x86或x64), 则可能是你传递了一些信息!请阅读Microsoft开发人员网络网站上的类的文档(分别在文章的每个部分中提供), 以获取每个属性的详细说明。
2.检索CPU温度和实例名称 【如何在WinForms中使用C#检索CPU的温度】现在, 你可以访问” 系统管理” 类, 你将可以使用以下代码查询所提到的类以获得CPU的温度:
注意 你可能会遇到从内核获得特权访问的问题, 因此请确保以管理员身份运行你的应用程序或Visual Studio(如果正在尝试)。
// Important: don't forget to include the System Management class in your codeusing System.Management; // Create tmp variables to store values during the queryDouble temperature = 0; String instanceName = ""; // Query the MSAcpi_ThermalZoneTemperature API// Note: run your app or Visual Studio (while programming) or you will get "Access Denied"ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature"); foreach (ManagementObject obj in searcher.Get()){temperature = Convert.ToDouble(obj["CurrentTemperature"].ToString()); // Convert the value to celsius degreestemperature = (temperature - 2732) / 10.0; instanceName = obj["InstanceName"].ToString(); }// Print the values e.g:// 29.8Console.WriteLine(temperature); // ACPI\ThermalZone\TZ01_0Console.WriteLine(instanceName);

编码愉快!

    推荐阅读