2010-01-15 4 views
5

내 현재 winpcap 라이브러리로는 불가능하다고 들었습니다.기계의 MAC 주소 받기 - 좋은 해결책?

정말 사실입니까? 나는 그물에 많은 예제를 본다.하지만 "이것은 작동하지 않는다"는 말을 덧붙인다.

로컬 컴퓨터의 MAC 주소를 얻는 가장 좋은 방법은 무엇입니까?

+0

무엇을위한 좋은 해결책입니까? 라이센스에 대해 고유 한 컴퓨터 식별자를 생성한다는 의미 일 경우 신뢰할 수 없어야합니다. 사용자가 네트워크 카드를 변경하고 카드가 2 개 있으며 네트워크 카드가없는 경우 어떻게됩니까? – Ash

답변

6

일반적인 방법 중 하나는 UUID의 비트를 사용하는 것이지만 완전히 신뢰할 수있는 것은 아닙니다. 예를 들어, 네트워크 어댑터가없는 시스템에서도 값을 반환합니다.

다행히도 최신 Windows 버전에 의존 할 수있는 방법이 있습니다. MSDN은 위로 윈도우 2000에 간다라고하지만, 내 기억이 정확하다면 그것은 또한 경우에 사람이 여전히 사용하고, SP 5 주위를 시작, NT 4에서 작동 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

5

컴퓨터에 NIC가 1 대 이상있는 경우 "the"MAC 주소와 같은 것이 없습니다. 자세한 내용은 http://techsupt.winbatch.com/TS/T000001002F19.html WMI를 사용하여이 정보를 쿼리 할 수 ​​있습니다.

+0

링크가 이미 죽었습니다 – malat