獲取網絡卡的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位址,而是虛擬機器的。下...