Obtenir adr. MAC

Résolu
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 19 avril 2005 à 12:11
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 20 avril 2005 à 11:47
hello world

je cherche comment avoir l'adresse MAC de mon PC, mais pas en utilisant la ligne de commande.

en gros je cherche un fonction de l'api win ou autre qui donne le MAC
de l'ordi sur lequel est exécuté mon prog (pas de truc en réseau ou
autre)



merci bien ;)

++

ad

_______________________


Omnia vincit labor improbus

9 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
19 avril 2005 à 17:21
Salut,

Voici un petit programme qui affiche l'adresse MAC de ton PC dans un MessageBox:



#include <windows.h>

#include



int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)

{

PMIB_IFTABLE buffer;

MIB_IFROW donnees;

ULONG size=0;

char chaine[30];



typedef DWORD (WINAPI *PFONCTION)(PMIB_IFTABLE , PULONG, BOOL);

HMODULE hDLL= LoadLibrary("iphlpapi.dll");

PFONCTION GetIfTable=(PFONCTION) GetProcAddress(hDLL,"GetIfTable");



buffer = (MIB_IFTABLE*) malloc(sizeof(MIB_IFTABLE));

GetIfTable (buffer, &size, TRUE);

buffer = (MIB_IFTABLE *) malloc (size);



GetIfTable (buffer, &size, TRUE);



for (DWORD i=0;idwNumEntries;i++)

{

donnees=buffer->table[i];

if(donnees.dwType==MIB_IF_TYPE_ETHERNET)

{

wsprintf(chaine,"%02X-%02X-%02X-%02X-%02X-%02X",

donnees.bPhysAddr[0],donnees.bPhysAddr[1],donnees.bPhysAddr[2],



donnees.bPhysAddr[3],donnees.bPhysAddr[4],donnees.bPhysAddr[5]);


MessageBox(0,chaine,"Adresse MAC",0);

}

}



FreeLibrary(hDLL);

return 0;

}



Il utilise la fonction GetIfTable() contenue dans iphlpapi.dll. GetAdaptersInfo() permet aussi de retrouver l'adresse MAC mais elle est un peu plus complexe.
3
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
19 avril 2005 à 14:59
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/sendarp.asp

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
19 avril 2005 à 17:29
J'ai oublié de mettre:

free(buffer);

juste avant FreeLibrary()
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
19 avril 2005 à 18:04
super

merci bcp :)

++

ad

_______________________


Omnia vincit labor improbus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
19 avril 2005 à 18:10
enfin quoique...

le

if(donnees.dwType==MIB_IF_TYPE_ETHERNET)

fait foirer le machin, aucune message box ne s'affiche

si je l'enleve, il me met d'abord 00-00-00-00-00-00

puis ensuite ma vraie adresse, un truc genre 00-53-45-00-00-00

(c'est celle affichée par la console de Windows)

enfin bon si ca marche...

faudra que j'essaye sur d'autres PCs

_______________________


Omnia vincit labor improbus
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
19 avril 2005 à 18:36
Ce test sert à vérifier qu'il s'agit bien d'une carte ethernet.
Si tu l'enlève, il t'affichera toutes les interfaces réseau
disponibles: interface Windows toujours présente, modem etc...

Il est donc essentiel de garder ce test si tu ne veux que l'adresse MAC de ta care réseau.

Ce petit programme n'est qu'un petit exemple. A toi de le perfectionner selon tes besoins.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
19 avril 2005 à 21:43
en fait, mon besoin est d'identifier un ordi: je voulais quelque chose
qui soit spécifique a chaque PC, et apparement l'adresse MAC
convient... j'ai pas franchement envie de faire une détection comme
pour l'activation de Windows, qui enregistre les caracs de tout le
hardware... juste un petit numéro simple, et qui ne soit pas le meme
d'un PC a l'autre,et qui marche meme si il n'y a pas de carte réseau...

_______________________


Omnia vincit labor improbus
0
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
20 avril 2005 à 09:40
De toutes façons tu ne pourras pas identifier un PC tant que tu n'auras pas défini de quoi est composé un PC...

Je m'explique : supposons que tu veuille identifier un PC par sa carte mère par exemple; si le type change sa carte, l'identification foire. Pourtant le PC est toujours le même. Tu vois ce que je veux dire ?

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
20 avril 2005 à 11:47
ben justement, c'est pour ca que Windows reste activé tant que tu ne changes pas la config

t'as le droit a 3 changements de matériel, apres ca se désactive et tu dois réactiver la chose
et
de toute facon, je n'ai pas besoin d'une telle 'précision'... moi ce
que je veux c'est juste dire si mon prog a déja été lancé sur tel ou
tel PC (c'est pour mettre sur une clé usb)

l'adress MAC devrait convenir pour ca
_______________________


Omnia vincit labor improbus
0
Rejoignez-nous