獲取當前活躍狀態的網卡MAC地址、物理地址
Wmic命令:Win32_NetworkAdapter和Win32_NetworkAdapterConfiguration。
其中cmd命令行執行:
1. Wmic Path Win32_NetworkAdapter get GUID,MACAddress,NetEnabled,PhysicalAdapter,Index
備注:
GUID:連接唯一標識;
MACAddress:網卡地址;
NetEnabled: 是否啟用了適配器,True為啟用,False為禁用;
PhysicalAdapter: 適配器是否物理或邏輯適配器,True為物理,False為邏輯;
Index: 網絡適配器的索引號,存儲在系統注冊表中。注冊表路徑Win32Registry|System\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}.
Msdn地址:
https://msdn.microsoft.com/en-us/library/aa394216(v=vs.85).aspx
要求:
| Minimum supported client |
Windows Vista |
| Minimum supported server |
Windows Server 2008 |
| Namespace |
Root\CIMV2 |
| MOF |
CIMWin32.mof |
| DLL |
CIMWin32.dll |
2. Wmic Path Win32_NetworkAdapterConfiguration get IPEnabled,MACAddress,SettingID, IPAddress, IPSubnet,Index
備注:
IPEnabled: 是否啟用了適配器,True為啟用,False為禁用;
MACAddress:網卡地址;
SettingID: 連接唯一標識;
IPAddress:IP地址;
IPSubnet:子網掩碼;
Index: Windows網絡適配器配置的索引號,在有多個配置時使用。注冊表路徑Win32Registry|System\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318};
Msdn地址:
https://msdn.microsoft.com/en-us/library/aa394217(v=vs.85).aspx#
要求:
| Minimum supported client |
Windows Vista |
| Minimum supported server |
Windows Server 2008 |
| Namespace |
Root\CIMV2 |
| MOF |
CIMWin32.mof |
| DLL |
CIMWin32.dll |
參數匹配關系:
| Win32_NetworkAdapter |
Win32_NetworkAdapterConfiguration |
| GUID |
SettingID |
| NetEnabled |
IPEnabled |
| MACAddress |
MACAddress |
| Index |
Index |
區分物理網卡和虛擬網卡
通過“Characteristics”這個值來確定網卡的類型是虛擬網卡還是物理網卡。
Characteristics 值在注冊表在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\【連接索引號】\下,在windows中,Characteristics 的取值如下,Characteristics項可以有1個或多個如下的值(多值應計算總和):【備注:在Windows7和Windows10下確認,Characteristics為dword,不可能多個值,這里的多個值,計算總和暫時未知。】
| 0x1 |
NCF_VIRTUAL |
說明組件是個虛擬適配器 |
| 0x2 |
NCF_SOFTWARE_ENUMERATED |
說明組件是一個軟件模擬的適配器 |
| 0x4 |
NCF_PHYSICAL |
說明組件是一個物理適配器 |
| 0x8 |
NCF_HIDDEN |
說明組件不顯示用戶接口 |
| 0x10 |
NCF_NO_SERVICE |
說明組件沒有相關的服務(設備驅動程序) |
| 0x20 |
NCF_NOT_USER_REMOVABLE |
說明不能被用戶刪除(例如,通過控制面板或設備管理器) |
| 0x40 |
NCF_MULTIPORT_INSTANCED_ADAPTER |
說明組件有多個端口,每個端口作為單獨的設備安裝。每個端口有自己的hw_id(組件ID) 並可被單獨安裝,這只適合於EISA適配器 |
| 0x80 |
NCF_HAS_UI |
說明組件支持用戶接口(例如,Advanced Page或Customer Properties Sheet) |
| 0x400 |
NCF_FILTER |
說明組件是一個過濾器 |
如果是虛擬網卡:Characteristics & NCF_VIRTUAL ==NCF_VIRTUAL
如果是物理網卡:Characteristics & NCF_PHYSICAL ==NCF_PHYSICAL
Example:
Characteristics的值為0x84,則0x84&0x4=0x4,則表示該網卡為物理網卡。
備注:
該方法在實體機上測試,可以區分開物理網卡和虛擬網卡;但是,在虛擬機系統中,也可以找到物理網卡。
參考地址:
http://blog.csdn.net/jianghui3132749/article/details/4868350
總結:
獲取當前活躍的物理網卡地址,可以直接使用Win32_NetworkAdapter,Win32_NetworkAdapterConfiguration主要作為一個參考比較。另外,命令支持系統最低版本有所限制,Windows Vista及以上,服務器版本Windows Server 2008及以上。
判斷無線網卡和有線網卡
1. 注冊表路徑:HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\【連接唯一標識】\Connection
路徑下的鍵值:MediaSubType,如果Value=2,表示無線網卡。
2. 注冊表路徑:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\【連接索引號】\Ndi\Interfaces
路徑下的鍵值:LowerRange,如果Value包含wifi或者wlan,(驗證的兩台設備Value=“wlan,ethernet,vwifi”),表示無線網卡。
總結:如上兩種方法判斷是否無線網卡的判斷標准, 對於標准的適用性,特殊情況,如VPN、虛擬網卡等情況是否有能很好的支持,仍然需要驗證。另外,3G網卡等尚未在判斷標准中,暫不支持。
備注:通過“netsh wlan set hostednetwork mode=allow ssid=Simnovo key=SimnovoWifi”命令創建的無線虛擬網卡,在判斷條件1,2下,均驗證為無線網卡,但是結合Characteristics的值判斷物理網卡,可以區分出來該網卡是無線虛擬網卡。
通過物理網卡條件以及無線網卡條件結合判斷,采用wmic和注冊表方式相對比較穩定。
判斷流程
1. Win7以上設備:執行Wmic Path Win32_NetworkAdapter get GUID,MACAddress,NetEnabled,PhysicalAdapter,Index,獲取NetEnabled和PhysicalAdapter均為True的項。其中NetEnabled獲取的True是為了獲取當前使用中的網卡。GUID為連接唯一標識,Index為連接索引號。
XP設備:由於XP對Win32_NetworkAdapter部分字段不支持,采用Wmic Path Win32_NetworkAdapterConfiguration get IPEnabled,MACAddress,SettingID, IPAddress, IPSubnet,Index,獲取IPEnabled為True的想,其中,IPEnabled獲取的True是為了獲取當前使用中的網卡。SettingID為連接唯一標識,Index為連接索引號。
2. 根據1中獲取到的連接索引號,注冊表路徑“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\【連接索引號】\”下,判斷Characteristics,篩選出物理網卡
3. 根據2中獲取的物理網卡,采用判斷有線網卡和無線網卡兩中方案進行篩選,獲取最終的當前使用中的網卡為有線物理網卡還是無線物理網卡。
驗證結果【圖片有些小,點擊鏈接查看】
聯想win8.1 WIFI 【正確】
聯想win8 WIFI 【正確】
三星win8 WIFI 【正確】
XPE有線 【正確】
聯想win7有線 【正確】
Win10 有線 【正確】
HP 有線 【正確】
HP wifi 【正確】
HP 3G: 【錯誤】
推薦一下自己的網站:www.mylofter.com:81,平行世界









