.NET 框架中的 WMI 命名空间
生活随笔
收集整理的這篇文章主要介紹了
.NET 框架中的 WMI 命名空间
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
.NET 框架中的 WMI 命名空間
?
.NET框架中與WMI規(guī)范有關(guān)的命名空間有兩個,分別是System.Management和System.Management.Instrumentation兩個命名空間。其中System.Managemen命名空間提供的類對象為訪問各種管理對象提供了面向?qū)ο蟮木幊探涌?#xff0c;而System.Management.Instrumentation命名空間提供的類用來設(shè)置用戶自定義的應(yīng)用程序,使得這些應(yīng)用程序?qū)ο竽軌蚍?/span>WMI的規(guī)范,從而通過WMI向使用該應(yīng)用程序的管理者公開其提供的管理信息和事件,這些使用者有可能是Microsoft Application Center 或 Microsoft Operations Manager這樣的,也有可能是自定義編寫的高端管理應(yīng)用程序(您可以通過System.Management命名空間提供的類對象來編寫自己的管理應(yīng)用程序)。因此,如果您想使自己的產(chǎn)品的管理可以在這些管理工具,您就得使您自己的應(yīng)用程序符合WMI的規(guī)范,而針對.NET平臺上的應(yīng)用程序WMI規(guī)范編寫來說,使用的是System.Management.Instrumentation命名空間提供的類。
?
System.Management 命名空間
System.Management 命名空間是 .NET Framework 中的 WMI 命名空間。此命名空間包括以下重要的類對象:
ManagementClass:管理類,它的構(gòu)造函數(shù)輸入?yún)?shù)為WMI類名稱,標(biāo)識管理對象,例如:
diskman = new ManagementClass("Win32_LogicalDisk");
diskman為Win32平臺下的整個邏輯磁盤的管理對象。
ManagementObjectCollection:ManagementObject管理對象的集合。
ManagementObject和:ManagementObject為具體的數(shù)據(jù)管理對象,對于上面的例子而言,可以對應(yīng)邏輯磁盤的C分區(qū)管理對象。看下面的代碼:
*****************************************************
ManagementObjectCollection disks = diskman.GetInstances();
foreach (ManagementObject disk in disks)
???????? {
???????? ???? Console.WriteLine("Disk = {0}" , disk["Name"].ToString());
????????????? Console.WriteLine("Disk = {0}" , disk["FileSystem"].ToString());
????????????? Console.WriteLine("Disk = {0}" , disk["Size"].ToString());
???????? }
*****************************************************
disks為邏輯磁盤分區(qū)C,D,E…的集合,對于每一個邏輯分區(qū),由一個disk對象管理其數(shù)據(jù),并輸出名稱,文件系統(tǒng)和磁盤空間大小。
ManagementQuery:用作所有查詢類的基礎(chǔ)。在前面說過,對于管理對象,可以像在關(guān)系數(shù)據(jù)庫里面使用SQL查詢語句一樣進(jìn)行您感興趣的數(shù)據(jù)過濾查詢,如:
SELECT * FROM Win32_ LogicalDisk
ManagementQuery作為查詢的抽象基類,您可以繼承以實(shí)現(xiàn)其方法,SelectQuery即是。
ManagementObjectSearcher:用于根據(jù)指定的查詢或枚舉檢索管理對象的集合。
*****************************************************
SelectQuery selectQuery = new SelectQuery("win32_logicaldisk");
??????? ManagementObjectSearcher searcher =
??????????? new ManagementObjectSearcher(selectQuery);
?
??????? foreach (ManagementObject disk in searcher.Get())
??{
??????????? Console.WriteLine(disk.ToString());
??????? }
****************************************************
?
以上代碼指定searcher的查詢?yōu)閟electQuery,即Win32邏輯磁盤的集合查詢,然后將這些邏輯磁盤分區(qū)輸出。當(dāng)然您也可以直接使用SQL查詢語句來實(shí)例化ManagementObjectSearcher對象,代碼如下:
ManagementObjectSearcher search=new ManagementObjectSearcher(“SELECT * FROM Win32_ LogicalDisk
”);
ManagementEventWatcher:用于預(yù)定WMI事件通知,這個在后面的章節(jié)中將詳細(xì)講述。
對于這個命名空間其他的類將在后面的實(shí)例講解中再做敘述。
?
System.Management.Instrumentation命名空間
從前面講述的內(nèi)容,您應(yīng)該知道如果想使得您自己的應(yīng)用程序或產(chǎn)品能夠使用諸如Microsoft Application Center 或 Microsoft Operations Manager這樣的管理工具,您就應(yīng)該將您的應(yīng)用程序?qū)ο笙蛑С?/span>WMI的工具公開信息。使用的將是System.Management.Instrumentation命名空間提供的類。
System.Management.Instrumentation命名空間可以使得您輕松的完成以下任務(wù):
n????????? 規(guī)范化應(yīng)用程序;
n????????? 將應(yīng)用程序事件暴露為WMI事件;
n????????? 創(chuàng)作管理對象;
n????????? 定義和使用管理對象之間的關(guān)系。
規(guī)范應(yīng)用程序的對象,使其符合WMI的規(guī)范,這樣的工作對于.NET程序員來說是直接簡單的。因?yàn)?/span>WMI的架構(gòu)模式本來就是面向?qū)ο蟮?#xff0c;并且有很多的特性與.NET元數(shù)據(jù)是相通的。因此應(yīng)用程序的對象可以直接映射為WMI對象,相同的,使應(yīng)用程序代碼轉(zhuǎn)化為可管理的應(yīng)用程序代碼將不會需要很大的代價(jià)。舉例來說您可以如此規(guī)范化.NET應(yīng)用程序:
n????????? 應(yīng)用程序的組件可以發(fā)生事件。
n????????? 提供可管理的對象使得應(yīng)用程序可以配置。
n????????? 暴露運(yùn)行時(shí)數(shù)據(jù),如性能特性
?
總結(jié)
以上是生活随笔為你收集整理的.NET 框架中的 WMI 命名空间的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。