在.NET中輕鬆擷取系統資訊(1) -WMI篇 Montaque(原作)

來源:互聯網
上載者:User
在.NET中輕鬆擷取系統資訊(1) -WMI篇    Montaque(原作)  
  
關鍵字     WMI,WQL,ManagementObjectSearcher
  


在.NET中輕鬆擷取系統資訊(1) -WMI篇

Montaque

申明:

    1、個人的一點心得,僅供參考
    2、轉載時候,請保留原本。




概述:

       不知道大家有沒有這種體會?有時候為了擷取系統一點點資訊,比如考慮一下作業系統的版本號碼,或者當前螢幕的解析度。其實說到底就是讀作業系統某個方面的一個屬性值而已,然後就看到我們的程式中密密麻麻的Win32 API申明,調用,代碼的可讀性和維護性不言而喻。到了.NET,微軟提供了更為豐富的類,有很多以前要調用API的方法可以在.NET中輕而易舉調用實現。今天簡單介紹一個在.NET中如何通過與WMI(Windows 管理規範)的通訊,從而得到擷取資訊的目的。

主要思路:

       舉一個擷取作業系統共用目錄和擷取主板號的例子,介紹如何利用System.Managment下面的類擷取系統相關的資訊:



本文:

       WMI(Windows管理規範:Windows Management Instrumentation)是Microsoft基於Web的企業管理(WBEM)的實現,同時也是一種基於標準的系統管理介面。WMI最早出現在Microsoft Windows 2000系統上,但它同樣可以安裝在Windows NT 4和Windows 9x電腦上。WMI是一種輕鬆擷取系統資訊的強大工具。

       在.NET中,有一個System.Management名空間(系統預設沒有引用,我們可以手動添加引用),通過下面的Class的操作,可以查詢系統軟硬體的資訊,先看一個簡單的例子:



Imports System.Management

Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_share")

Dim share As ManagementObject

For Each share In searcher.Get()

       MessageBox.Show(share.GetText(TextFormat.Mof))

Next share


啟動並執行結果是列出了所有系統當前共用的目錄、以及描述等等。



分析一下上面的代碼,可以看到一下幾點:

1、似乎是在進行資料庫操作,有點像SQL語句。其實就是SQL操作,這種語句被成WQL(WMI Query Language),實際上是標準SQL的一個子集加上了WMI的擴充.

2、WQL是個唯讀查詢語言,我們只能查詢響應的資料,不能用UPDATE,INSERT等更新操作

3、代碼很簡單、通俗易懂

4、我們採用了一種MOF(管理物件格式)的顯示。



例子二:擷取當前主板的資訊

       上面的例子是一個軟體方面的資訊,下面看一個擷取硬體資訊的例子,擷取主板的序號以及製造商:

Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard")

Dim share As ManagementObject

   For Each share In searcher.Get()

      Debug.WriteLine("主板製造商:" & share("Manufacturer"))

      Debug.WriteLine("型號:" & share("Product"))

      Debug.WriteLine("序號:" & share("SerialNumber"))

   Next share


總結以及補充:

       WMI類也是分層次的,具體可以參考msdn中的WMI;轉向.NET平台開發的時候,最好能多看一些關於.NET新特性的介紹,這樣可以大幅度的提升代碼的開發效率以及運行效率。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。