WMI技術的應用 (轉)

worldblog發表於2007-12-14
WMI技術的應用 (轉)[@more@]

管理規範 (WMI) 是可伸縮的管理結構,它採用一個統一的、基於標準的、可擴充套件的面向介面。WMI 為您提供與資訊和基礎 WMI 互動的標準方法。WMI 主要由系統管理應用開發人員和管理員用來訪問和管理資訊。

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

>

將 WMI 與 一起使用

WMI 提供了大量的規範以便為許多高階應用程式(例如, 、Microsoft SERVER 和 Microsoft Internet 資訊服務 (IIS))實現幾乎任何管理任務。管理員可以下列任務:

  • 監視應用程式的執行狀況。
  • 檢測瓶頸或故障。
  • 管理和應用程式。
  • 查詢應用程式資料(使用物件關係的遍歷和查詢)。
  • 執行無縫的本地或管理操作。

WMI 結構由以下三層組成:

  • 客戶端

    使用 WMI 執行操作(例如,讀取管理詳細資訊、配置系統和預訂事件)的。

  • 物件管理器

    提供程式與客戶端之間的中間裝置,它提供一些關鍵服務,如標準事件釋出和預訂、事件篩選、查詢引擎等。

  • 提供程式

    軟體元件,它們捕獲實時資料並將其返回到客戶端應用程式,處理來自客戶端的方法並將客戶端連結到所管理的基礎結構。

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

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

用 System.Management 訪問管理資訊

System.Management 名稱空間是 .NET 框架中的 WMI 名稱空間。此名稱空間包括下列支援 WMI 操作的第一級類物件:

  • Management 或 ManagementClass:分別為單個管理物件或類。
  • ManagementObjectSearcher:用於根據指定的查詢或列舉檢索 ManagementObject 或 ManagementClass 物件的集合。
  • ManagementEventWatcher:用於預訂來自 WMI 的事件通知。
  • ManagementQuery:用作所有查詢類的基礎。

System.Management 類的使用編碼範例對 .NET 框架環境很適合,並且 WMI 在任何適當的時候均使用標準基框架。例如,WMI 廣泛利用 .NET 集合類並使用推薦的編碼,如 .NET 非同步操作的“委託”模式。因此,使用 .NET 框架的開發人員可以使用他們的當前技能訪問有關計算機或應用程式的管理資訊。

請參見

/html/cpconmanagingapplicationsusingwmi.htm">使用 WMI 管理應用程式 | | | | 執行管理物件的方法 | |

 

獲取序列號程式碼
string cpuInfo = "";//cpu序列號
 ManagementClass cimobject = new ManagementClass("_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 addresst{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  );
}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993395/,如需轉載,請註明出處,否則將追究法律責任。

相關文章