程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 由“如何取得CPU的溫度與型號”學到的知識延伸WQL

由“如何取得CPU的溫度與型號”學到的知識延伸WQL

編輯:C#入門知識

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加入引用

          CPUtprt = =  System.Management.ManagementObjectSearcher(,  (System.Management.ManagementObject mo = Convert.ToDouble(Convert.ToDouble(mo.GetPropertyValue().ToString()) - ) / =  + CPUtprt.ToString() +  =  ManagementObjectSearcher( (ManagementObject mObject .label1.Text+=(mObject[

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下面比較常用的一些類。表格如下:

類名

描述

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved