2012年3月20日

[C#] - 透過WMI Win32_NetworkAdapter取得MAC

今天要介紹的是透過WMI來取得系統的資訊,

.NET提供了幾個類別用於取得WMI所管理的資訊,

其中包含了硬體資訊和系統資訊。
接下來說明如何取得網卡上的位址(MAC Address)

1.首先透過ManagementObjectSearcher執行WQL(WMI Query Language)
2.使用ManagementObjectCollection取得查詢回傳的集合
3.最後使用ManagementObject來逐一分析比對,取得所要的資料。


Sample:            
           
ManagementObjectSearcher query = new ManagementObjectSearcher(@"SELECT * 
                                     FROM Win32_NetworkAdapter ");
 ManagementObjectCollection queryCollection = query.Get();
            foreach (ManagementObject mo in queryCollection)
            {
                Console.WriteLine(mo["MacAddress"].ToString().Replace(":", ""));
            }

做到這邊想必會想說如何取得MacAddress這個Properties吧!

下面的程式可以取得這個ManagementObject所有的Properties這樣就能逐一找到需要的Properties了。

foreach (PropertyData prop in mo.Properties)
            {
                if (prop.Value!= null)
                    Console.WriteLine("{0}: {1}", prop.Name, prop.Value);
            }

參考出處:
1.Find only physical network adapters with WMI Win32_NetworkAdapter class
2.http://msdn.microsoft.com/en-us/library/aa394606(VS.85).aspx
3.http://stackoverflow.com/questions/1525320/how-to-enumerate-audio-out-devices-in-c-sharp

沒有留言:

張貼留言