MAC地址獲取,有線網卡與無線網卡、物理網卡與虛擬網卡的區分


獲取當前活躍狀態的網卡MAC地址、物理地址

Wmic命令:Win32_NetworkAdapterWin32_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 【正確】

image

聯想win8 WIFI 【正確】

image

三星win8 WIFI 【正確】

image

XPE有線 【正確】

image

聯想win7有線 【正確】

image

Win10 有線 【正確】

image

HP 有線 【正確】

image

HP wifi 【正確】

image

HP 3G: 【錯誤】

image

 

推薦一下自己的網站:www.mylofter.com:81,平行世界


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM