xantra
Messages postés56Date d'inscriptionjeudi 24 août 2006StatutMembreDernière intervention 2 septembre 2011
-
21 juin 2009 à 18:53
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
30 juin 2009 à 10:22
Bonjour,
Je cherche un code permettant de récupérer la mac adresse de la carte réseau numéro 1 d'un pc. Après une journée de recherche je commence a croire que c'est impossible, tout les codes que je trouve ne fonctionne pas.
Je code avec Code Blocks en C++ une appli Win32.
Merci d'avance.
xantra
Messages postés56Date d'inscriptionjeudi 24 août 2006StatutMembreDernière intervention 2 septembre 2011 21 juin 2009 à 20:12
Mieu encore, si je pouvais récupérer le numéro de série du CPU. Ce que je sais c'est que c'est possible, voir ici : http://www.cppfrance.com/codes/TAG-CLE-UNIQUE_47949.aspx Mais j'ai pas assez de connaissance pour y extraire juste ce qu'il me faut. Trop complexe sont code.
Quelqu'un peu m'aider pour récupérer le numero de serie du CPU?
Merci d'avance.
xantra
Messages postés56Date d'inscriptionjeudi 24 août 2006StatutMembreDernière intervention 2 septembre 2011 22 juin 2009 à 01:49
Houa, je suis gâté, mais malheureusement mon compilo n'est pas de cette avis.
La ligne "__asm {" renvoi l'erreur suivant "error: expected `(' before '{' token"
Il n'y a pas autre chose que librpcrt4.a à linker? Ou un autre .h a inclure?
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 30 juin 2009 à 10:22
Salut,
Pour ce qui est de l'adresse mac...
Trois méthodes sont présentées ici, dont la méthode de BruNews (UuidCreateSequential inclus l'adresse mac dans le numéro unique généré) et la méthode de f_l_a_s_h_b_a_c_k (Utilisation de la fonction NetBios).
La méthode de BruNews nécessite Windows 2000 ou plus, UuidCreate pouvant servir pour les versions précédentes.
La méthode de f_l_a_s_h_b_a_c_k ne fonctionne pas sous Vista et Windows server 2008.
La troisième méthode proposée, GetAdaptaterInfo, fonctionne à partir de Windows 2000.
Il y a une quatrième méthode en passant par la classe WMI Win32_NetworkAdapterConfiguration, qui propose une propriété MACAddress. Exemple d'utilisation de WMI en C ici.
Concernant "le numéro de série du CPU"...
Je ne crois pas qu'il soit récupérable de manière logiciel, sauf exceptions. Dans le source de f_l_a_s_h_b_a_c_k, l'instruction cpuid est exécutée après avoir mis eax à 1. Autrement dit, il récupère des
informations sur les capacités du processeur, pas un numéro unique ou
de série. On demande le numéro de série en lui mettant eax à 3 avant
d'appeler cpuid. Mais cela ne fonctionne que sur certains processeurs (cf wikipedia).
Côté WMI, la classe Win32_Processor propose ProcessorId qui correspond à cpuid avec eax = 1 (Donc je le
rappelle, pas du tout à un ID, mais aux fonctionnalités disponibles).
Elle propose aussi UniqueId, mais cette propriété est à null partout où
je l'ai essayé. Elle correspond très certainement à cpuid avec eax = 3.
Voilà
un petit script vbscript qui affiche l'adresse MAC (Ou les adresses
MAC) ainsi que les info sur le processeur via WMI (Donc c'est très
lent). Encore une fois, pour une traduction en C, voir cette source.
Mettre ce code dans un fichier .vbs. Double cliquer dessus, ou lancer une invite de commande et taper :
cscript /nologo NomDuFichiervbs.vbs
Dim objWMIService
Dim objProcessors
Dim objProcessor
Dim objNetworkConfigs
Dim objNetworkConfig
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objProcessors = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objProcessor In objProcessors
Wscript.Echo "DeviceId = " & objProcessor.DeviceId
Wscript.Echo "Name = " & objProcessor.Name
Wscript.Echo "Caption = " & objProcessor.Caption
Wscript.Echo "Manufacturer = " & objProcessor.Manufacturer
Wscript.Echo "MaxClockSpeed = " & objProcessor.MaxClockSpeed
Wscript.Echo "ProcessorId = " & objProcessor.ProcessorId
Wscript.Echo "UniqueId = " & objProcessor.UniqueId
Wscript.Echo vbCrLf
Next
Set objNetworkConfigs = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration")
For Each objNetworkConfig In objNetworkConfigs
If objNetworkConfig.IPEnabled Then
Wscript.Echo "Description = " & objNetworkConfig.Description
Wscript.Echo "MACAddess = " & objNetworkConfig.MACAddress
Wscript.Echo vbCrLf
End If
Next