常用的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());
}
}
沒有留言:
張貼留言