C#判斷是否存在已連接的真實網卡
這個問題可以拆成兩個小問題:
1、如何判斷一個網卡是否爲真實網卡(即物理網卡),因爲可能還有虛擬網卡,比如裝了某個虛擬機;
2、如何判斷一個網卡有沒有連接(連接不代表就能上Internet)。
注:這裏的網卡確切地應該叫網絡適配器(Network Adapter)。
用C#獲取硬件信息最方便的莫過於WMI了,與網卡相關的信息就在Win32_NetworkAdapter這個類裏面了。
第一個問題:在Win32_NetworkAdapter裏有個叫PNPDeviceID的字符串屬性,官方的說明是Windows Plug and Play device identifier of the logical device。如果這個屬性的前3個字符是PCI, 那麼這就是本機的真實網卡(不要問我爲什麼,我也想知道),包括無線網卡。
第二個問題:還是在Win32_NetworkAdapter裏有個名爲NetConnectionStatus的uint16類型的屬性,其中2代表已連接,7代表斷開。其他各值的含義請參見MSDN。
OK,問題解決,最終的代碼爲:
ManagementObjectSearcher s = new ManagementObjectSearcher(
@"SELECT DeviceID FROM Win32_NetworkAdapter WHERE NetConnectionStatus=2 AND PNPDeviceID LIKE 'PCI%'");
return s.Get().Count > 0; //True表示存在已連接的真實網卡,False反之。
記得添加using System.Management;和對System.Management.dll的引用。
-------------------------------------------------------------
轉載出處:
百度空間:http://hi.baidu.com/roovent
-------------------------------------------------------------