由“如何取得CPU的温度与型号”学到的知识延伸WQL
【Base】:WMI是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。WQL就是 WMI 中的查询语言,翻译成中文好像可以成为 Windows 管理规范查询语言。
1.如何获取CPU的温度与型号
由于视窗本身并无提供各项硬体温度的监控方式,因此WMI虽然是的Windows提供的管理服务,但仍然需要硬体支援才能得到所需的资讯。
MSAcpi_ThermalZoneTemperature顾名思义是透过Acpi这个共同管理界面来查询,因此您的系统必须具备Acpi热区才有办法问到,而Acpi热区其实是笔记本电脑设计下的产品,在PC系统下并无Acpi热区的设计。
一般在电脑上是使用Win32_TemperatureProbe进行查询,但由于Win32_TemperatureProbe是直接问SMBIOS ,由SMBIOS里面挖出资料,但SMBIOS是否有支援WMI是由主机板厂商决定。也就是说,若主板厂商有支援WMI ,便可以使用Win32_TemperatureProbe的CurrentReading读到CPU溫度。但很不幸的,大多数(几乎可说是全部)的主板厂商都没有支援这项功能。
WMI的Windows管理规范提供系统,装置和应用程式资讯,在.NET中提供的System.Management命名空间取得WMI的讯息,以下介绍如何取得CPU的温度与序号。
使用ManagementObjectSearcher对象类别,使用前必须先将的System.Management加入引用
private void GetCPUTemperature()
{
double CPUtprt = ;
System.Management.ManagementObjectSearcher mos
= new System.Management.ManagementObjectSearcher(@"root\WMI", "Select * From MSAcpi_ThermalZoneTemperature"); foreach (System.Management.ManagementObject mo in mos.Get())
{
CPUtprt = Convert.ToDouble(Convert.ToDouble(mo.GetPropertyValue("CrrentTemperature").ToString()) - ) / ;
label1.Text = "CPU温度:" + CPUtprt.ToString() + "°C\n";
}
} private void GetCPUCode()
{
ManagementObjectSearcher moSearch = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"); foreach (ManagementObject mObject in moSearch.Get())
{
this.label1.Text+=(mObject["ProcessorId"].ToString());
}
}
2.WQL知识
WQL就是 WMI 中的查询语言,WQL 的全称是 WMI Query Language,简称为 WQL,翻译成中文好像可以成为 Windows 管理规范查询语言。熟悉 SQL 语言的朋友会感觉它和 SQL 非常相似。
WQL 其实非常简单,它有如下特点:
1、每个 WQL 语句必须以 SELECT 开始;
2、SELECT 后跟你需要查询的属性名(我刚才对应 SQL 将其称之为字段名了),也可以像 SQL 一样,以*表示返回所有属性值;
3、FROM 关键字;
4、你要查询的类的名字;
5、另外,如果你想精确查询结果还可以加上 WHERE 条件从句。比如某个类有 Enable 属性,你可以在查询的时候加上 WHERE ENABLE=true。
就像这样:
SELECT 字段名 FROM 类名
如以下的都是正确的 WQL 语句:
Select * From Win32_LogicalDisk where drivetype=3 ’‘’‘查询所有硬盘分区
SELECT * FROM Win32_share ’‘查询所有共享目录
SELECT * FROM Win32_NetworkAdapterConfiguration WHERE DHCPEnabled=TRUE
SELECT Description FROM Win32_Account WHERE Name='Administrator'
SELECT Freespace,DeviceID FROM Win32_LogicalDisk
在 WinXP 和 Win2003 中有一个自带的 WQL 测试工具,叫 wbemtest.exe,用它就能查看有哪些类和类有哪些 属性,使用方法如下:
首先,运行 wbemtest.exe,如下图:

点“确定”之后会出现一个“Windows 管理规范测试器”的窗口,如下图:

点击“连接”会出现一个对话框,我们可以选择连接本地主机或者远程主机,如下图:

如果是本机测试并且是用管理员身份登录,可以不用填写用户名和密码,如果是链接远程主机则需要填写远程主机上的用户名和密码(建议使用远程主机上的管理员身份登录),点击“连接”之后就会回到主界面。注意,只有登录之后才能查看和查询。
点击“查询”按钮,输入我们要查询的 WQL 语句,如"Select * From Win32_LogicalDisk",这是查询系统逻辑驱动器的 WQL 语句,如图:

这是我们多半会得到一个号码为"0x80041010" ,描述为"无效类别"的错误,如下图:

出现这个错误是因为刚开始默认的名称空间为"root\default",这时我们需要更改名称空间。再点击“连接”按钮,将默认的"root\default"更改为"root\cimv2",然后再点"连接"按钮,如下图:

登录成功之后我们就可以查看系统有哪些类,并且还可以执行 WQL 查询了。点击"枚举类别"按钮,然后在弹出的对话框中输入要查找的类名就可以查询类的属性了。如下图(注意:我没有填写超类别名称,并且选中"递归"单选按钮,这样就是递归列举系统中所有的类):

查询结果如下图:

这些可都是有用的东西哦,如果你细心,你会这个列表里发现我以前所用到的 WQL 语句里设计到的所有的类,如 Win32_LogicalDisk、Win32_share 等等。需要注意的是,有些还有括号,这些是方法。
下面是一些查询的结果:


我们还可以对其中某一项数据双击查看属性,如下图:

如果我们不习惯这种方式查看,我们还可以点击上面这个窗口中的"显示 MOF“按钮,下图是我点击"显示MOF“按钮的结果:

从上面的图里就能看出这个类有哪些属性及对应的属性值了。
今天的内容看起来似乎和.net 没有什么联系,但是只有了解并且熟悉了 WQL 才能使我们快速和顺利地编写.net 代码。
相信信息可以参照下面的地址了解:
http://msdn.microsoft.com/zh-cn/library/system.management.managementobjectsearcher(v=vs.100)
3.WQL类
那么,在WMI中,我们有多少类可以供WQL查询呢?这个Mitchell倒是没有具体去统计数字,但在普通的操作中,能够涉及到的却并不是十分的多,我们可以用表格的形式列出在Win32下面比较常用的一些类。表格如下:
|
类名 |
描述 |
|
Win32_Fan |
系统风扇 |
|
Win32_Keyboard |
键盘 |
|
Win32_PointingDevice |
指示设备,如鼠标 |
|
Win32_CDROMDrive |
CD-ROM |
|
Win32_DiskDrive |
系统的硬盘 |
|
Win32_PhysicalMedia |
任何存储设备,在一般的机器上,包含CD-ROM,物理硬盘,软驱,磁带机等 |
|
Win32_BIOS |
系统BIOS |
|
Win32_CacheMemory |
系统的Cache内存 |
|
Win32_MemoryDevice |
内存,含相关联的映射地址 |
|
Win32_PhysicalMemory |
物理内存 |
|
Win32_Processor |
CPU |
|
Win32_NetworkAdapter |
网络适配器,含物理网卡 |
|
Win32_NetworkAdapterConfiguration |
网络适配器配置 |
|
Win32_NetworkAdapterSetting |
网络适配器以及其相关设定 |
|
Win32_Printer |
打印/传真设备 |
|
Win32_DesktopMonitor |
显示设备 |
|
Win32_DisplayConfiguration |
显示设备配置 |
|
Win32_Desktop |
桌面 |
|
Win32_Environment |
系统环境 |
|
Win32_Directory |
文件目录,所有的目录 |
|
Win32_DiskPartition |
磁盘分区 |
|
Win32_LogicalDisk |
逻辑磁盘 |
|
Win32_Process |
进程信息 |
|
Win32_Account |
账户信息 |
|
Win32_PerfFormattedData |
格式化后的性能数据 |
|
Win32_Service |
系统服务 |
有了WMI类之后,我们就可以根据自己的需要来写WQL来查询系统中的各个数据了,比如我们想知道当前系统中有多少物理磁盘的存在,只需要下面这样就能返回系统的磁盘实例:
SELECT * FROM Win32_DiskDrive
如果需要进一步了解这些物理磁盘的信息,可以从获取的参数中去查找,这些参数,你可以查找MSDN上的帮助文档即可,是不是非常的方便?
由“如何取得CPU的温度与型号”学到的知识延伸WQL的更多相关文章
- Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度
Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度 硬件平台: Raspberry Pi B+ 软件平台: Raspberry 系统与前期安装请参见:树莓派(Ros ...
- Linux下查看CPU信息、机器型号等硬件信息命令
Linux下查看CPU信息.机器型号等硬件信息命令 编写一个bash脚本: vim info.sh #!/bin/bash cat /etc/issue echo "____________ ...
- [转载]Ubuntu环境下检查CPU 的温度
原文地址:https://www.linuxprobe.com/ubuntu-cpu-temperature.html 我们将使用一个GUI工具Psensor,它允许你在Linux中监控硬件温度.用P ...
- UNraid学习随手记:显示主板、CPU传感器温度
话不多说直接开始 首先安装NerdTools 地址: https://raw.githubusercontent.com/dmacias72/unRAID-NerdPack/master/plugin ...
- shell脚本 查看cpu的温度
一.简介 源码地址 日期:2018/8/24 介绍:查看主板上单个多核CPU中温度最高的一个内核 效果图: 二.使用 适用:centos6+ 语言:英文 注意:需要先安装lm_sensors,不支持虚 ...
- Linux 查看CPU信息、机器型号等硬件信息
测试机器的硬件信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeo ...
- Cpu 常见系列以及型号
Intel旗下 赛扬(Celeron)——桌面低端 奔腾(Pentium)—— 桌面中端 酷睿 (Core)——桌面高端 至强(Xeon)——服务器中端 安腾(Itanium)——服务器高端 凌动(A ...
- Linux 查看CPU信息、机器型号等硬件信息[转]
查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU ...
- [转]Linux下查看CPU信息、机器型号等硬件信息
From: http://www.jbxue.com/LINUXjishu/14582.html 查看CPU信息(型号) : # cat /proc/cpuinfo | grep name | cut ...
随机推荐
- u3d中刚体与碰撞体的理解以及is Trigger属性的意义
刚体:个人理解就是具有物理属性(如:质量),接受物理作用(如:重力)的组件. 碰撞体:个人理解就是计算碰撞后的物理量(如:弹力). 刚体与碰撞体的关系:个人理解判断碰撞体就是需要计算力,如果碰撞的物体 ...
- sql2008修改数据库文件名称
例如我们有数据库a,需修改成b,包括文件名称也修改 1.备份数据a 选择数据库->右键->任务->备份,备份出a.bak 2.右键->任务->还原->数据库,跳出“ ...
- Mybatis的mapper注册
既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了.但是首先我们需要告诉 MyBatis 到哪里去找到这些语句. Java 在自动查找这方面没有提供一个很好的方法 ...
- java中的数据结构[copy]
转自http://developer.51cto.com/art/201107/273003.htm java版数据结构与算法,希望对你有帮助. 线性表,链表,哈希表是常用的数据结构,在进行Java开 ...
- Python(八)之函数
Python函数 函数作用: (1)代码重用 (2)一种设计工具,分解复杂问题 (3)将相关功能打包并参数化 函数种类: 全局函数:定义在模块中 局部函数:嵌套在其他函数中 lambda函数:表达式 ...
- 移动web开发(四)——X-UA-Compatible
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> IE=edge告诉 ...
- strcpy和memcpy的区别(转)
转自:http://www.cnblogs.com/stoneJin/archive/2011/09/16/2179248.html strcpy和memcpy都是标准C库函数,它们有下面的特点.st ...
- mysql5.5编译安装过程(自己总结)
一,安装过程 //创建mysql安装目录,创建数据存放目录,创建用户和用户组与赋予数据存放目录权限 mkdir -p /usr/local/mysql/ mkdir -p /data/mysql/ g ...
- Fiddler设置抓取FireFox火狐的包
参考 http://blog.csdn.net/zhoutaohenan/article/details/8477993 亲测有效 Fiddler使用教程 http://blog.csdn.net/o ...
- WPF使用socket实现简单聊天软件
公司网络限制不能传文件,先贴部分代码 控件添加到界面就行,界面随意布局 项目结构: 1.解决方案 1.1. Client 1.2. Server Client: <Window x:Class= ...