WMI技術的應用

Windows 管理規範 (WMI) 是可伸縮的系統管理結構,它採用一個統一的、基於標準的、可擴展的面向對象接口。WMI 爲您提供與系統管理信息和基礎 WMI API 交互的標準方法。WMI 主要由系統管理應用程序開發人員和管理員用來訪問和操作系統管理信息。

WMI 可用於生成組織和管理系統信息的工具,使管理員或系統管理人員能夠更密切地監視系統活動。例如,可以使用 WMI 開發一個應用程序,用於在 Web 服務器崩潰時呼叫管理員。

將 WMI 與 .NET 框架一起使用
WMI 提供了大量的規範以便爲許多高端應用程序(例如,Microsoft Exchange、Microsoft SQL Server 和 Microsoft Internet 信息服務 (IIS))實現幾乎任何管理任務。管理員可以執行下列任務:

監視應用程序的運行狀況。
檢測瓶頸或故障。
管理和配置應用程序。
查詢應用程序數據(使用對象關係的遍歷和查詢)。
執行無縫的本地或遠程管理操作。
WMI 結構由以下三層組成:

客戶端
使用 WMI 執行操作(例如,讀取管理詳細信息、配置系統和預訂事件)的軟件組件。

對象管理器
提供程序與客戶端之間的中間裝置,它提供一些關鍵服務,如標準事件發佈和預訂、事件篩選、查詢引擎等。

提供程序
軟件組件,它們捕獲實時數據並將其返回到客戶端應用程序,處理來自客戶端的方法調用並將客戶端鏈接到所管理的基礎結構。

通過定義完善的架構向客戶端和應用程序無縫地提供了數據和事件以及配置系統的能力。在 .NET 框架中,System.Management 命名空間提供了用於遍歷 WMI 架構的公共類。

除了 .NET 框架,還需要在計算機上安裝 WMI 才能使用該命名空間中的管理功能。如果使用的是 Windows Millennium Edition、Windows 2000 或 Windows XP,那麼已經安裝了 WMI。否則,將需要從 MSDN 下載 WMI。

用 System.Management 訪問管理信息
System.Management 命名空間是 .NET 框架中的 WMI 命名空間。此命名空間包括下列支持 WMI 操作的第一級類對象:

ManagementObject 或 ManagementClass:分別爲單個管理對象或類。
ManagementObjectSearcher:用於根據指定的查詢或枚舉檢索 ManagementObject 或 ManagementClass 對象的集合。
ManagementEventWatcher:用於預訂來自 WMI 的事件通知。
ManagementQuery:用作所有查詢類的基礎。
System.Management 類的使用編碼範例對 .NET 框架環境很適合,並且 WMI 在任何適當的時候均使用標準基框架。例如,WMI 廣泛利用 .NET 集合類並使用推薦的編碼模式,如 .NET 異步操作的“委託”模式。因此,使用 .NET 框架的開發人員可以使用他們的當前技能訪問有關計算機或應用程序的管理信息。

請參見
使用 WMI 管理應用程序 | 檢索管理對象的集合 | 查詢管理信息 | 預訂和使用管理事件 | 執行管理對象的方法 | 遠程處理和連接選項 | 使用強類型對象



獲取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();
}

獲取網卡硬件地址
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 );
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章