VC 獲取物理網絡卡的MAC位址

2021-06-21 14:46:56 字數 1207 閱讀 9605

獲取網絡卡的mac位址的方法很多,如:netbios,snmp,getadaptersinfo等。經過測試發現 netbios 方法在網線拔出的情況下獲取不到mac,而 snmp方法有時會獲取多個重複的網絡卡的mac,試來試去還是 getadaptersinfo方法比較好,網線拔出的情況下可以獲取mac,而且很準確,不會重複獲取網絡卡。

getadaptersinfo 方法

也不是十全十美,也存在些問題:

1)如何區分物理網絡卡和虛擬網絡卡;

2)如何區分無線網絡卡和有線網絡卡;

3)「禁用」的網絡卡獲取不到。

關於問題1和問題2我的處理辦法是:

區分物理網絡卡和虛擬網絡卡:padapter->description中包含"pci"是:物理網絡卡。(試了3臺機器可以)

區分無線網絡卡和有線網絡卡:padapter->type為71的是:無線網絡卡。(試了2個無線網絡卡也可以)

現在把**貼出來和大家分享:

"#include

<

atlbase.h

>

#include

<

atlconv.h

>

#include

"iphlpapi.h

"#pragma

comment ( lib, "iphlpapi.lib")

intmain(

intargc,

char

*argv)

if((dwretval

=getadaptersinfo( padapterinfo,

&uloutbuflen))

==no_error)

printf(

"adaptertype: \t%d\n

",padapter

->

type);

printf(

"ipaddress: \t%s\n

",padapter

->

ipaddresslist.ipaddress.string);

printf(

"ipmask: \t%s\n

",padapter

->

ipaddresslist.ipmask.string);

}padapter

=padapter

->

next;}}

else

return0;

}

ASP獲取網絡卡實體地址(MAC)

mac,全稱 media access control mac位址就是在 接入層上使用的位址,通俗點說就是網絡卡的實體地址,現在的mac位址一般都採用6位元組48bit 在早期還有2位元組16bit的mac位址 對於mac位址,由於我們不直接和它接觸,所以大家不一定很熟悉。在osi open sys...

獲取網絡卡MAC位址

做網路程式設計的程式設計師免不了要與mac位址打交道,這個128bit的數字串在某種程度上就代表了機器的唯一性,因此在做統計工作時一般都以mac位址作為標準。下面介紹兩種獲取本機mac位址的方式。1.通過請求netbios服務獲取mac位址 2.通過iphelpapi獲取。第一種方法要求本機開啟了n...

VC獲取MAC位址

以前用wdk獲取一些硬體資訊,但是有些需要管理員許可權,比較尷尬。誰都不喜歡多彈乙個對話方塊。現在又因為需要獲取mac位址,在網上收集了一下方法,還是有一些方法。使用過其中兩三種,比較推薦如下 個人在vc2010下使用的 原因是,存在虛擬機器時,其他方法往往不能獲取真實mac位址,而是虛擬機器的。下...