C# 获取CPU 温度 的两种方式
上次接手了一个需要对服务器的检测系统软件,但是在获取CPU温度的时候总是出问题,查找了很多的资料,总结了以下两种方法,是比较常见的
//第一种方法 就是传统的 wimi 方式获取 ,需要引进一个命名空间 using System.Management;
public static void GetCPUTemperature()
{
string str = "";
ManagementObjectSearcher vManagementObjectSearcher = new ManagementObjectSearcher(@"root\WMI", @"select * from MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject managementObject in vManagementObjectSearcher.Get())
{
str += managementObject.Properties["CurrentTemperature"].Value.ToString();
}
//这就是CPU的温度了
float temp = (float.Parse(str) - 2732) / 10;
}
这种方式往往跟服务器本身的硬件配置是有关系的,可能会在 foreach (ManagementObject managementObject in vManagementObjectSearcher.Get()) 这一行代码报错
解决方案一:用管理员身份运行你的项目 (如果还是有错的话,那就使用第二种方式吧)
///第二种方法 据说是非wimi方式,好像是通过虚拟硬盘读取的(没看太懂)(也是要以管理员身份运行这个软件)
这个方法需要引进一些现有的开源类库(OpenHardwareMonitor.csproj,OpenHardwareMonitorLib.csproj)
下载地址:http://download.csdn.net/detail/liyanping521/5216007
这种方法是借鉴别人的,是一个OpenHardwareMonitor的开源检测软件,有源码和使用方法
Open Hardware Monitor可以支持大部分常见的主板芯片与硬件组件,监控包含主板、CPU、硬盘、显示卡、装置的电压、温度、风扇转速与运作频率、负载等信息。
使用方法:将库添加至项目中(就是将你下载的项目源码放你的项目里边或者是引用编译好的dll 文件)
声明:
PersistentSettings settings =new PersistentSettings();
UpdateVisitor updateVisitor = new UpdateVisitor();
初始化config配置文件,详情见Bin目录Debug/Replase\OpenHardwareMonitor.config文件
//Application 的命名空间是 System.Windows.Forms; 别引用错了
settings.Load(Path.ChangeExtension(
Application.ExecutablePath, ".config"));
初始化Computer对象
Computer computer= new Computer(settings);
调用open方法,这个方法一定要打开
conputer.open();
获取cpu温度:
StringBuilder str = new StringBuilder();
computer.Accept(updateVisitor);
for (int i = 0; i < computer.Hardware.Length; i++)
{
//循环找到HardwareType为cpu
if (computer.Hardware[i].HardwareType == HardwareType.CPU)
{
for (int j = 0; j < computer.Hardware[i].Sensors.Length;j++ )
{
//找到温度
if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature)
{
//获取到cpu核心
str.Append(computer.Hardware[i].Sensors[j].Name);
str.Append("\t");
//这里就是cpu温度了
str.Append(computer.Hardware[i].Sensors[j].Value.ToString());
str.Append("\n");
}
}
}
}
Console.WriteLine(str.ToString());
C# 获取CPU 温度 的两种方式相关推荐
- ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)
ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式) 目录 基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两 ...
- html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式
从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...
- Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式
Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以从代码中简单理解成Receiver方式是通过zookeeper来连接kafka队列,Direct方 ...
- Android获取IP地址的两种方式(准确版)
原文:https://blog.csdn.net/sinat_16458039/article/details/50260589 最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下 ...
- Express全系列教程之(四):获取Post参数的两种方式
一.关于POST请求 post方法作为http请求很重要的一部分,几乎所有的网站都有用到它,与get不同,post请求更像是在服务器上做修改操作,它一般用于数据资源的更新. 相比于get请求,post ...
- iOS 通过URL网络获取XML数据的两种方式
下面简单介绍如何通过url获取xml的两种方式. 第一种方式相对简单,使用NSData的构造函数dataWithContentsOfURL:不多解释,直接上代码咯. NSURL *url = [NSU ...
- 【url传参】之 获取url?后面的参数,对应参数名获取值 和 全量获取转换为对象结构两种方式
访问你挚爱的强哥_百度搜索https://www.baidu.com/s?wd=%E4%BD%A0%E6%8C%9A%E7%88%B1%E7%9A%84%E5%BC%BA%E5%93%A5&r ...
- struts2_action获取web资源的两种方式
Ⅰ.和servelet API 解耦的方式:只能访问到有限的资源 (1)通过ActionContext的getXXX方法获取相关资源 例: public class TestActionContext ...
- java获取文件后缀_Java获取文件后缀的两种方式
在对文件进行操作的时候,我们经常需要用到文件的后缀.但是Java API中并没有提供获取文件后缀的方法.下面的工具方法可以帮助我们实现这个目的. 方法1 代码示例: package org.4spac ...
最新文章
- 单链表-两个线性表的合并1(破环原链表+尾插法)
- MPB:农科院田健、韩东飞等-​​水稻根系互作功能微生物的筛选方法
- java component创建_spring--打印hello--注解component--自动创建对象
- vue项目打包丢入服务器,浅谈vue项目如何打包扔向服务器
- wxWidgets:wxOwnerDrawnComboBox类用法
- netflix_Netflix播放按钮剖析
- 逆向so_安卓逆向 | 分析调试与so调用实战
- MySQL 之binlog日志说明及利用binlog日志恢复数据操作记录
- Entity Framework 实践系列 —— 搞好关系 - 单相思(单向一对一,one-to-one)
- T-SQL查询处理详解
- WM_CREATE消息响应函数和WM_INITDIALOG消息响应函数之区别
- centos安装wget_宝塔是干什么的?3分钟教会你云服务器上安装宝塔面板
- matlab 画图 方程,matlab 画图与解方程
- CentOS7安装Zeppelin完整步骤
- html英文字母大小,英语字母书写笔顺 英语 , 26个英文字母大小写规范书写技巧...
- SPIR-V教程 -- SPIR-V介绍(一)
- javascript原生脚本代码 飘浮广告
- VSCode撸猫插件vscode-cats它来了,一起来云撸猫吧
- bzoj1707[Usaco2007 Nov]tanning分配防晒霜*
- [Python Scrapy爬虫] 二.翻页爬取农产品信息并保存本地