2010-01-15 70 views
5

我聽說用我當前的winpcap庫是不可能的。獲得機器的MAC地址 - 良好的解決方案?

這是真的嗎?我在網上看到很多例子,但接着發表評論說:「這不起作用」。

什麼是獲得本地機器的MAC地址的最佳方式是什麼?

+0

好的解決方案是什麼?如果你的意思是生成一些獨特的計算機標識符用於許可證,我會說它不應該依賴。當用戶更換網卡時會發生什麼情況,有2張網卡,沒有網卡? – Ash 2010-01-15 07:16:12

回答

6

一種常見的方法是使用來自UUID的位,但這不是完全可靠的。例如,即使在沒有網絡適配器的機器上,它也會返回一個值。

幸運的是,有一種方法可以可靠地運行在任何合理的最新版本的Windows上。 MSDN說,它只是重新到Windows 2000,但如果沒有記錯,它也適用於NT 4,圍繞SP 5日開始,在任何人的情況下仍然使用NT 4

#include <windows.h> 
#include <iphlpapi.h> 
#include <stdio.h> 

int main() {   
    IP_ADAPTER_INFO *info = NULL, *pos; 
    DWORD size = 0; 

    GetAdaptersInfo(info, &size); 

    info = (IP_ADAPTER_INFO *)malloc(size); 

    GetAdaptersInfo(info, &size); 

    for (pos=info; pos!=NULL; pos=pos->Next) { 
     printf("\n%s\n\t", pos->Description); 
     printf("%2.2x", pos->Address[0]); 
     for (int i=1; i<pos->AddressLength; i++) 
      printf(":%2.2x", pos->Address[i]); 
    } 

    free(info); 
    return 0; 
} 

請原諒古老的C代碼.. 。

+0

這是在一個項目中,但在winpcap項目中,我試圖利用它在netioapi.h中有很多編譯器錯誤 – bobber205 2010-01-16 22:40:15

相關問題