.NET(C#):使用ManagementEventWatcher進行WMI事件查詢

來源:互聯網
上載者:User

首先ManagementEventWatcher繼承與Component類,因此也繼承IDisposable,注意使用後資源銷毀。ManagementEventWatcher.Query屬性是一個EventQuery對象,用來代表監控的WQL事件查詢語句。

 

對於同步事件查詢(調用線程會阻塞),使用WaitForNextEvent方法。無參數,返回一個ManagementBaseObject。對於非同步事件查詢(調用線程不會阻塞),使用Start方法。然後使用ManagementEventWatcher的EventArrived事件。這個事件的EventArgs(EventArrivedEventArgs類型)中的NewEvent屬性是一部返回的ManagementBaseObject對象。

 

要注意的是不管是同步還是非同步得到的ManagementBaseObject都不是WMI事件查詢的目標對象執行個體。而真正執行個體包含在這個ManagementBaseObject的TargetInstance屬性中,這個屬性的值是另一個ManagementBaseObject,而這個ManagementBaseObject才是我們需要的事件查詢中對應的類執行個體,如果你用如下代碼來列舉ManagementBaseObject的PropertyData的話:

//注意:引用System.Management.dll 和 using System.Management;

static void GetProperties(ManagementBaseObject mobj)

{

    foreach (PropertyData pro in mobj.Properties)

        Console.WriteLine("名稱:{0} 類型:{1} 值:{2}", pro.Name, pro.Type, pro.Value);

}

 

輸出將會類似這樣:

名稱:SECURITY_DESCRIPTOR 類型:UInt8 值:

名稱:TargetInstance 類型:Object 值:System.Management.ManagementBaseObject

名稱:TIME_CREATED 類型:UInt64 值:129681300945559581

(第二個名稱為TargetInstance的屬性才是真正的類執行個體)

 

好了理論上就是這些,如果你想看一個執行上的實際程式,可以參考這篇文章:.NET(C#)使用WMI事件查詢實現對進程和可移動磁碟的監控。

最後關於查詢上的時間限制。可以使用ManagementEventWatcher.Options屬性。他的類型是EventWatcherOptions,這個類繼承與ManagementOptions類型,後者有一個Timeout屬性(TimeSpan類型)來控制限時。

 

如下代碼:

//注意:引用System.Management.dll 和 using System.Management;

var query = new WqlEventQuery(

    "__InstanceCreationEvent",

    TimeSpan.FromSeconds(3),

    "TargetInstance ISA 'Win32_Process'");

 

using (var watcher = new ManagementEventWatcher(query))

{

    watcher.Options.Timeout = TimeSpan.FromSeconds(20);

    //限時20秒,逾時後ManagementException異常拋出

 

    ManagementBaseObject e = watcher.WaitForNextEvent();

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.