c#與WMI使用技巧集第2/2頁
更新時間:2007年03月09日 00:00:00 作者:
獲取CPU序列號代碼
string cpuInfo = "";//cpu序列號
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach(ManagementObject mo in moc)
{
cpuInfo = mo.Properties["ProcessorId"].value.ToString();
Console.WriteLine(cpuInfo);
Console.ReadLine();
}
獲取網(wǎng)卡硬件地址
using System.Management;
...
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
Console.WriteLine("MAC address\t{0}", mo["MacAddress"].ToString());
mo.Dispose();
}
}
獲取硬盤ID
String HDid;
ManagementClass cimobject = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach(ManagementObject mo in moc)
{
HDid = (string)mo.Properties["Model"].value;
MessageBox.Show(HDid );
}
16、在.NET中輕松獲取系統(tǒng)信息(1) -WMI篇
Montaque
申明:
1、個人的一點(diǎn)心得,僅供參考
2、轉(zhuǎn)載時候,請保留原本。
概述:
不知道大家有沒有這種體會?有時候?yàn)榱双@取系統(tǒng)一點(diǎn)點(diǎn)信息,比如考慮一下操作系統(tǒng)的版本號,或者當(dāng)前屏幕的分辨率。其實(shí)說到底就是讀操作系統(tǒng)某個方面的一個屬性值而已,然后就看到我們的程序中密密麻麻的Win32 API申明,調(diào)用,代碼的可讀性和維護(hù)性不言而喻。到了.NET,微軟提供了更為豐富的類,有很多以前要調(diào)用API的方法可以在.NET中輕而易舉的調(diào)用實(shí)現(xiàn)。今天簡單介紹一個在.NET中如何通過與WMI(Windows 管理規(guī)范)的通訊,從而得到獲取信息的目的。
主要思路:
舉一個獲取操作系統(tǒng)共享目錄和獲取主板號的例子,介紹如何利用System.Managment下面的類獲取系統(tǒng)相關(guān)的信息:
正文:
WMI(Windows管理規(guī)范:Windows Management Instrumentation)是Microsoft基于Web的企業(yè)管理(WBEM)的實(shí)現(xiàn),同時也是一種基于標(biāo)準(zhǔn)的系統(tǒng)管理接口。WMI最早出現(xiàn)在Microsoft Windows 2000系統(tǒng)上,但它同樣可以安裝在Windows NT 4和Windows 9x計算機(jī)上。WMI是一種輕松獲取系統(tǒng)信息的強(qiáng)大工具。
在.NET中,有一個System.Management名空間(系統(tǒng)默認(rèn)沒有引用,我們可以手動添加引用),通過下面的Class的操作,可以查詢系統(tǒng)軟硬件的信息,先看一個簡單的例子:
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
運(yùn)行的結(jié)果是列出了所有系統(tǒng)當(dāng)前共享的目錄、以及描述等等。
分析一下上面的代碼,可以看到一下幾點(diǎn):
1、似乎是在進(jìn)行數(shù)據(jù)庫操作,有點(diǎn)像SQL語句。其實(shí)就是SQL操作,這種語句被成WQL(WMI Query Language),實(shí)際上是標(biāo)準(zhǔn)SQL的一個子集加上了WMI的擴(kuò)展.
2、WQL是個只讀的查詢語言,我們只能查詢響應(yīng)的數(shù)據(jù),不能用UPDATE,INSERT等更新操作
3、代碼很簡單、通俗易懂
4、我們采用了一種MOF(托管對象格式)的顯示。
例子二:獲取當(dāng)前主板的信息
上面的例子是一個軟件方面的信息,下面看一個獲取硬件信息的例子,獲取主板的序列號以及制造商:
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
總結(jié)以及補(bǔ)充:
WMI類也是分層次的,具體可以參考msdn中的WMI;轉(zhuǎn)向.NET平臺開發(fā)的時候,最好能多看一些關(guān)于.NET新特性的介紹,這樣可以大幅度的提升代碼的開發(fā)效率以及運(yùn)行效率。
相關(guān)文章
C#正則過濾HTML標(biāo)簽并保留指定標(biāo)簽的方法
這篇文章主要介紹了C#正則過濾HTML標(biāo)簽并保留指定標(biāo)簽的方法,涉及C#針對頁面HTML元素正則匹配與替換相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
C#調(diào)用C類型dll入?yún)閟truct的問題詳解
這篇文章主要給大家介紹了關(guān)于C#調(diào)用C類型dll入?yún)閟truct問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
C#中通過反射將枚舉元素加載到ComboBo的實(shí)現(xiàn)方法
本文主要介紹了C#中通過反射將枚舉元素加載到ComboBo的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
C# 對PDF文檔加密、解密(基于Spire.Cloud.SDK for .NET)
這篇文章主要介紹了C# 基于Spire.Cloud.SDK for .NET對PDF文檔進(jìn)行加密解密,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
C#可用于登錄驗(yàn)證碼的四位隨機(jī)數(shù)生成方法
這篇文章主要介紹了C#可用于登錄驗(yàn)證碼的四位隨機(jī)數(shù)生成方法,提供了兩種生成四位隨機(jī)數(shù)的方法供大家參考,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12

