【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)

http://blog.useasp.net/archive/2013/06/15/the-tutorial-series-of-wql-that-the-sql-in-wmi-chapter-one-keywords.aspx

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的更多相关文章

  1. Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度

     Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度 硬件平台: Raspberry Pi B+ 软件平台: Raspberry 系统与前期安装请参见:树莓派(Ros ...

  2. Linux下查看CPU信息、机器型号等硬件信息命令

    Linux下查看CPU信息.机器型号等硬件信息命令 编写一个bash脚本: vim info.sh #!/bin/bash cat /etc/issue echo "____________ ...

  3. [转载]Ubuntu环境下检查CPU 的温度

    原文地址:https://www.linuxprobe.com/ubuntu-cpu-temperature.html 我们将使用一个GUI工具Psensor,它允许你在Linux中监控硬件温度.用P ...

  4. UNraid学习随手记:显示主板、CPU传感器温度

    话不多说直接开始 首先安装NerdTools 地址: https://raw.githubusercontent.com/dmacias72/unRAID-NerdPack/master/plugin ...

  5. shell脚本 查看cpu的温度

    一.简介 源码地址 日期:2018/8/24 介绍:查看主板上单个多核CPU中温度最高的一个内核 效果图: 二.使用 适用:centos6+ 语言:英文 注意:需要先安装lm_sensors,不支持虚 ...

  6. Linux 查看CPU信息、机器型号等硬件信息

    测试机器的硬件信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c       8  Intel(R) Xeo ...

  7. Cpu 常见系列以及型号

    Intel旗下 赛扬(Celeron)——桌面低端 奔腾(Pentium)—— 桌面中端 酷睿 (Core)——桌面高端 至强(Xeon)——服务器中端 安腾(Itanium)——服务器高端 凌动(A ...

  8. Linux 查看CPU信息、机器型号等硬件信息[转]

    查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c       8  Intel(R) Xeon(R) CPU    ...

  9. [转]Linux下查看CPU信息、机器型号等硬件信息

    From: http://www.jbxue.com/LINUXjishu/14582.html 查看CPU信息(型号) : # cat /proc/cpuinfo | grep name | cut ...

随机推荐

  1. 【转帖】(一)unity4.6Ugui中文教程文档-------概要

    原帖至上,移步请戳:(一)unity4.6Ugui中文教程文档-------概要 unity4.6中的一个重要的升级就是GUI ,也把它称为UGUI ,废话我不多说,大家可以百度了解一下. 虽然现在处 ...

  2. Kali Linux安装Remmina无法加载RDP插件

    原因是确少匹配的 libfreerdp库 可以到这里下载 http://ftp.de.debian.org/debian/pool/main/f/freerdp/ 我的电脑是64位的  我下载的是ht ...

  3. Java获取此次请求URL以及服务器根路径的方法

    http://www.jb51.net/article/71693.htm ********************************************** 本文介绍了Java获取此次请求 ...

  4. 【JavaScript】脚本

    javascript: void((function() { var as = document.getElementsByTagName('a'); for (var i = 0, j = as.l ...

  5. Android开发(十一)——ImageView的尺寸设置scaleType

    ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType). android:scaleType是控制图片如 ...

  6. button上传替换file上传按钮,并显示图片缩略图,纯jsp操作

    1.jsp代码 <div class="inputBox"> <span id="tu" <c:if test="${pd = ...

  7. One-hot 编码/TF-IDF 值来提取特征,LAD/梯度下降法(Gradient Descent),Sigmoid

    1. 多值无序类数据的特征提取: 多值无序类问题(One-hot 编码)把“耐克”编码为[0,1,0],其中“1”代表了“耐克”的中 间位置,而且是唯一标识.同理我们可以把“中国”标识为[1,0],把 ...

  8. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0

    从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法 操作系统:使用的是64位的Windows Server 2008 解决办法 ...

  9. CSS标签类型和样式表继承与优先级

    标签类型 块级标签 什么是块级标签:在html中<div>. <p>.h1~h6.<form>.<ul> 和 <li>就是块级元素 块级标签 ...

  10. [Selenium.2.Testing.Tools.Beginners.Guide]读书笔记

    Assert, this allows the test to check if the element is on the page, if it is not available then the ...