Récupérer la MacAdress

Le
PimSaVie
Bonjour

je souhaiterais récupérer la MacAdress de la carte réseau d'un PC afin
de construire un N° de licence à partir de cet adresse.

J'ai trouvé sur internet le code Romain Petit, mais une fois exécuté,
il me renvoit que des "0".. Est-ce que qq'un aurait une idée du
problème, et pourrait me dire où vérifier ce N°?

Merci d'avance

Karine
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
paratge
Le #14615871
PimSaVie a écrit :
Bonjour

je souhaiterais récupérer la MacAdress de la carte réseau d'un PC afin
de construire un N° de licence à partir de cet adresse.

J'ai trouvé sur internet le code Romain Petit, mais une fois exécuté,
il me renvoit que des "0".. Est-ce que qq'un aurait une idée du
problème, et pourrait me dire où vérifier ce N°?

Merci d'avance

Karine




Bonsoir,

Une idée du problème, non, sans le code, difficile, par contre la
vérification de la MACAdresse doit se faire par Executer/cmd/ipconfig /all.

Si ça peut t'aider...
PimSaVie
Le #14615851
voila le code ;o)

FONCTION sAdresseMAC()

// (c) Mars 2002 Romain PETIT (mailto:)
// sous licence WD-LIBRE (http://www.windevasso.org)
// But : obtenir l'adresse MAC de la carte réseau
// Paramètres : aucun
// Retour : chaine, adresse MAC (6 nombres en hexa séparés par un
espace)
// Références API:
// http://support.microsoft.com/default.aspx?scid=kb;FR;q175472
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netbi os/netbios_1l82.asp
// Exemple :
// Info(fg_AdresseMAC())
sRetour est une chaîne

NCBASTAT est un entier = 0x33
NCBRESET est un entier = 0x32
HEAP_ZERO_MEMORY est un entier = 0x8
HEAP_GENERATE_EXCEPTIONS est un entier = 0x4

NCB est une structure
ncb_command est un entier sur 1 octet sans signe
ncb_retcode est un entier sur 1 octet sans signe
ncb_lsn est un entier sur 1 octet sans signe
ncb_num est un entier sur 1 octet sans signe
ncb_buffer est un entier sur 4 octets
ncb_length est un entier sur 2 octets
ncb_callname est une chaîne ASCIIZ sur 16
ncb_name est une chaîne ASCIIZ sur 16
ncb_rto est un entier sur 1 octet sans signe
ncb_sto est un entier sur 1 octet sans signe
ncb_post est un entier sur 4 octets
ncb_lana_num est un entier sur 1 octet sans signe
ncb_cmd_cplt est un entier sur 1 octet sans signe
ncb_reserve est un tableau statique de 10 entiers sans signe sur 1
octet
ncb_event est un entier sur 2 octets
FIN

ADAPTER_STATUS est une structure
adapter_address est un tableau statique de 6 entiers sans signe sur 1
octet
rev_major est un entier sur 1 octet sans signe
reserved0 est un entier sur 1 octet sans signe
adapter_type est un entier sur 1 octet sans signe
rev_minor est un entier sur 1 octet sans signe
duration est un entier sur 2 octets
frmr_recv est un entier sur 2 octets
frmr_xmit est un entier sur 2 octets
iframe_recv_err est un entier sur 2 octets
xmit_aborts est un entier sur 2 octets
xmit_success est un entier sur 4 octets
recv_success est un entier sur 4 octets
iframe_xmit_err est un entier sur 2 octets
recv_buff_unavail est un entier sur 2 octets
t1_timeouts est un entier sur 2 octets
ti_timeouts est un entier sur 2 octets
Reserved1 est un entier sur 4 octets
free_ncbs est un entier sur 2 octets
max_cfg_ncbs est un entier sur 2 octets
max_ncbs est un entier sur 2 octets
xmit_buf_unavail est un entier sur 2 octets
max_dgram_size est un entier sur 2 octets
pending_sess est un entier sur 2 octets
max_cfg_sess est un entier sur 2 octets
max_sess est un entier sur 2 octets
max_sess_pkt_size est un entier sur 2 octets
name_count est un entier sur 2 octets
FIN

NAME_BUFFER est une structure
Name est une chaîne ASCIIZ de 16
name_num est un entier sur 2 octets
name_flags est un entier sur 2 octets
FIN

ASTAT est une structure
adapt est un ADAPTER_STATUS
NameBuff est un tableau statique de 31 NAME_BUFFER
FIN

tNcb est un NCB
bRet est un booléen
c est un entier
tASTAT est un ASTAT
eASTAT est un entier
eHeap est un entier

tNcb:ncb_command = NCBRESET
bRet = AppelDLL32("netapi32.dll","Netbios",&tNcb)
tNcb:ncb_command = NCBASTAT
tNcb:ncb_lana_num = 0
tNcb:ncb_callname ="* "

tNcb:ncb_length = Dimension(tASTAT)
eHeap =AppelDLL32("kernel32","GetProcessHeap")
eASTAT = AppelDLL32("kernel32","HeapAlloc", eHeap,
OUBinaire(HEAP_GENERATE_EXCEPTIONS,HEAP_ZERO_MEMORY), tNcb:ncb_length)

SI PAS eASTAT ALORS
Erreur("L'allocation de mémoire a échouée !")
SINON
tNcb:ncb_buffer = eASTAT
bRet = AppelDLL32("netapi32.dll","Netbios",&tNcb)
AppelDLL32("kernel32","RtlMoveMemory", &tASTAT, tNcb:ncb_buffer,
Dimension(tASTAT))
//ou on peut utiliser : transfert(&tASTAT,tNcb:ncb_buffer,
Dimension(tASTAT)
POUR c=1 A 6
sRetour +=NumériqueVersChaîne(tASTAT:adapt:adapter_address[c],"02X")
+" "
FIN
sRetour = SansEspace(sRetour)
eHeap = AppelDLL32("kernel32","GetProcessHeap")
AppelDLL32("kernel32","HeapFree", eHeap, 0, eASTAT)
FIN

RENVOYER sRetour
Romain PETIT
Le #14612591
PimSaVie a formulé ce mardi :
voila le code ;o)



Salut,

il me semble que le problème avec cette fonction est lié avec la
configuration TCP/IP de la machine (plusieurs cartes réseau, lien
Netbios ...)

utilise plutôt celle-ci :
http://rompetit.free.fr/Pub/WD7/fg_AdresseMACDistante.txt

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Publicité
Poster une réponse
Anonyme