WMI in C#[强类型操作]
生活随笔
收集整理的這篇文章主要介紹了
WMI in C#[强类型操作]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C# 進行WMI操作的內容封裝在System.Management.dll中,具體的在MSDN有詳細描述,默認是用[“**’]去讀取和設置屬性等。
此處介紹一個自動生成強類型的包裝軟件,這樣處理起來就簡單了很多,不用在反復的查看參數等信息了。
1、 使用WMIExplorer生成WMI對應的包裝類
2、 針對生成類可以進行強類型操作。
WMIExplorer可以在http://www.primaltools.com/downloads/communitytools/中找到。
如上圖示,選擇需要操作的CIM類別,右鍵生成即可。生成類包括了各種屬性和操作的方法。
以Win32_Process管理機器上的進程為例,針對生成的類的操作方法:
using ROOT.CIMV2.Win32;Process.StaticScope = this.scope; var ps = Process.GetInstances(); foreach (var p in ps) { using(Process m = p as Process) { System.Diagnostics.Debug.WriteLine(m.Name); if (m.Name == "notepad.exe") { m.Terminate(1); } } } uint pid; Process.Create("notepad.exe", null, null, out pid); var my = Process.GetInstances(this.scope, "ProcessId=" + pid.ToString()); if (my.Count > 0) { var i = my.GetEnumerator(); i.MoveNext(); Process p = i.Current as Process; p.Terminate(1); }//另一種形式的對比: ManagementObject mo = new ManagementClass(this.scope, new ManagementPath("MSFT_SIPESUserContactData"), new ObjectGetOptions()).CreateInstance();mo["UserInstanceID"] = this.userId;mo["SIPURI"] = sip;mo["GroupID"] = groupIds;mo["Name"] = name;mo["Subscribed"] = true;mo.Put();SIPESUserContactData.StaticScope = this.scope;SIPESUserContactData c = SIPESUserContactData.CreateInstance();c.LateBoundObject["UserInstanceID"] = this.userId;c.LateBoundObject["SIPURI"] = sip;c.LateBoundObject["GroupID"] = groupIds;c.LateBoundObject["Name"] = name;c.LateBoundObject["Subscribed"] = true;c.CommitObject(); 以上可見,由于生成類中包括了屬性名字,即使使用名字時,直接參考類就行了。方便了很多。
這個例子是操作進程和Office Communicator服務器上的聯系人的操作示例等。
http://cid-56b433ad3d1871e3.office.live.com/self.aspx/.Public/WMIDemo.zip
轉載于:https://www.cnblogs.com/2018/archive/2010/09/25/1834880.html
總結
以上是生活随笔為你收集整理的WMI in C#[强类型操作]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hello Blog!
- 下一篇: GridView生成序号