常用的Win32類別可以在msdn查詢相關資料
http://msdn.microsoft.com/en-us/library/aa394084%28v=VS.85%29.aspx
System.Management提供了幾種常用的Class來取得WMI相關訊息
- ObjectQuery
- ManagementObjectSearcher
- ManagementObjectCollection
- ManagementObject
- ManagementClass
private void WMI() { //建立ManageClass類別 ManagementClass wmi_Local = new ManagementClass("Win32_LogicalDisk"); //利用foreach取得ManagementObject foreach (ManagementObject wmiSelect in wmi_Local.GetInstances()) { MessageBox.Show(wmiSelect["DeviceID"].ToString()); } }ManagementObjectSearcher(摘錄自msdn)
這個類別的執行個體會將 ObjectQuery 或其系出物件所表示的 WMI 查詢當做輸入,也會選擇性將表示執行查詢所在 WMI 命名空間的 ManagementScope 當做輸入。
private void WMI() { //使用Query的方式來查詢Win32_LogicalDisk類別,DriveType為本機磁碟的代碼 ManagementObjectSearcher wmi_LocalTest = new ManagementObjectSearcher("select * from Win32_LogicalDisk where DriveType=3"); foreach (ManagementObject wmiSelect in wmi_LocalTest.Get()) { MessageBox.Show(wmiSelect["DeviceID"].ToString()); } }以下為連到遠端電腦簡單範例︰
public void remoteWMI() { //建立遠端連線 ConnectionOptions remoteCon = new ConnectionOptions(); //remoteCon.Authority = "ntdlmdomain:DOMAIN"; //如果為NULL,則已電腦的網域為預設值 remoteCon.Username="Administrator"; remoteCon.Password="*****"; //取得或設定 COM 驗證等級,以使用於這個連接中的作業。 //remoteCon.Authentication =AuthenticationLevel.Default; //指出是否需要為連接作業啟用使用者權限。在執行的作業需要啟用某些使用者權限時 (例如,電腦重新開機) 才應該使用這個屬性。 //remoteCon.EnablePrivileges = true; //設定管理的範圍 ManagementScope remoteSop = new ManagementScope("\\\\192.168.1.115\\root\\cimv2",remoteCon); remoteSop.Connect(); //宣告Query ObjectQuery queryStr=new ObjectQuery("select * from Win32_UserAccount"); ManagementObjectSearcher wmi_Local = new ManagementObjectSearcher(remoteSop, queryStr); //利用foreach取得ManagementObjec執行個體 foreach (ManagementObject wmiSelect in wmi_Local.Get()) { MessageBox.Show(wmiSelect["Name"].ToString()); } }
沒有留言:
張貼留言