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、個人的一點心得,僅供參考
2、轉(zhuǎn)載時候,請保留原本。
概述:
不知道大家有沒有這種體會?有時候為了獲取系統(tǒng)一點點信息,比如考慮一下操作系統(tǒng)的版本號,或者當(dāng)前屏幕的分辨率。其實說到底就是讀操作系統(tǒng)某個方面的一個屬性值而已,然后就看到我們的程序中密密麻麻的Win32 API申明,調(diào)用,代碼的可讀性和維護性不言而喻。到了.NET,微軟提供了更為豐富的類,有很多以前要調(diào)用API的方法可以在.NET中輕而易舉的調(diào)用實現(xiàn)。今天簡單介紹一個在.NET中如何通過與WMI(Windows 管理規(guī)范)的通訊,從而得到獲取信息的目的。
主要思路:
舉一個獲取操作系統(tǒng)共享目錄和獲取主板號的例子,介紹如何利用System.Managment下面的類獲取系統(tǒng)相關(guān)的信息:
正文:
WMI(Windows管理規(guī)范:Windows Management Instrumentation)是Microsoft基于Web的企業(yè)管理(WBEM)的實現(xiàn),同時也是一種基于標準的系統(tǒng)管理接口。WMI最早出現(xiàn)在Microsoft Windows 2000系統(tǒng)上,但它同樣可以安裝在Windows NT 4和Windows 9x計算機上。WMI是一種輕松獲取系統(tǒng)信息的強大工具。
在.NET中,有一個System.Management名空間(系統(tǒng)默認沒有引用,我們可以手動添加引用),通過下面的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
運行的結(jié)果是列出了所有系統(tǒng)當(dāng)前共享的目錄、以及描述等等。
分析一下上面的代碼,可以看到一下幾點:
1、似乎是在進行數(shù)據(jù)庫操作,有點像SQL語句。其實就是SQL操作,這種語句被成WQL(WMI Query Language),實際上是標準SQL的一個子集加上了WMI的擴展.
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é)以及補充:
WMI類也是分層次的,具體可以參考msdn中的WMI;轉(zhuǎn)向.NET平臺開發(fā)的時候,最好能多看一些關(guān)于.NET新特性的介紹,這樣可以大幅度的提升代碼的開發(fā)效率以及運行效率。
相關(guān)文章
C#數(shù)據(jù)庫操作類AccessHelper實例
這篇文章主要介紹了C#數(shù)據(jù)庫操作類AccessHelper實例,可實現(xiàn)針對access數(shù)據(jù)庫的各種常見操作,非常具有實用價值,需要的朋友可以參考下2014-10-10C#如何安全、高效地玩轉(zhuǎn)任何種類的內(nèi)存之Span的本質(zhì)
為什么要使用指針,什么時候需要使用它,以及如何安全、高效地使用它?本文將講清楚 What、How 和 Why ,讓你知其然,更知其所以然2021-08-08C#實現(xiàn)文件與二進制互轉(zhuǎn)并存入數(shù)據(jù)庫
這篇文章主要介紹了C#實現(xiàn)文件與二進制互轉(zhuǎn)并存入數(shù)據(jù)庫,本文直接給出代碼實例,代碼中包含詳細注釋,需要的朋友可以參考下2015-06-06