Une méthode courante consiste à utiliser des bits d'un UUID, mais cela n'est pas entièrement fiable. Par exemple, il renvoie une valeur même sur une machine qui n'a pas de carte réseau.
Heureusement, il existe un moyen qui fonctionne de manière fiable sur toute version raisonnablement récente de Windows. MSDN dit qu'il va seulement à Windows 2000, mais si ma mémoire est bonne, il travaille également sur NT 4, à partir d'environ SP 5, dans le cas où tout le monde est toujours en utilisant 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;
}
S'il vous plaît pardonnez l'ancien code C .. .
Bonne solution pour quoi? Si vous voulez dire que vous générez un identifiant d'ordinateur unique pour l'octroi de licences, je dirais qu'il ne devrait pas être utilisé. Que se passe-t-il lorsque l'utilisateur change de carte réseau, a 2 cartes, n'a pas de carte réseau? – Ash