2010-01-15 23 views
5

He oído que no es posible con mi biblioteca actual de winpcap.Obtención de la dirección MAC de la máquina: ¿buena solución?

¿Es esto realmente cierto? Veo muchos ejemplos en la red pero luego comento diciendo "Esto no funciona".

¿Cuál es la mejor manera de obtener una dirección MAC de la máquina local?

+0

¿Buena solución para qué? Si quiere decir generar un único identificador de computadora para la licencia, diría que no se debe confiar en eso. ¿Qué sucede cuando el usuario cambia la tarjeta de red, tiene 2 tarjetas, no tiene una tarjeta de red? – Ash

Respuesta

6

Un método común es utilizar bits de un UUID, pero esto no es del todo confiable. Por ejemplo, devolverá un valor incluso en una máquina que no tiene un adaptador de red.

Afortunadamente, hay una manera que funciona de manera confiable en cualquier versión razonablemente reciente de Windows. MSDN dice que sólo se remonta a Windows 2000, pero si falla la memoria, sino que también funciona en NT 4, comenzando alrededor de 5 SP, por si alguien todavía está utilizando 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; 
} 

Por favor, perdona el código C antigua .. .

+0

Esto estaba trabajando en un proyecto en sí mismo, pero en el proyecto con winpcap que estaba tratando de utilizarlo tenía muchos errores de compilación en netioapi.h – bobber205

Cuestiones relacionadas