Sat83
Messages postés166Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention13 octobre 2008
-
13 mars 2007 à 16:13
Sat83
Messages postés166Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention13 octobre 2008
-
16 mars 2007 à 10:03
Bonjour!
Alors comme indiqué dans le titre, j'aimerais savoir comment savoir comment recuperer l'addresse MAC d'une machine...
J'ai trouvé plusieurs solution sur le net, mais aucune ne semble fonctionné:
http://www.scalabium.com/faq/dct0088.htm Mais cette fonction me donne un autre resultat a chaque appel...
Sat83
Messages postés166Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention13 octobre 2008 13 mars 2007 à 17:48
Merci de ton aide...
Je viens de tester le code que tu m'a donné, et malheureusement j'ai le meme resultat qu'avec le code du deuxieme lien que j'ai donné, a savoir que ca marche nickel quand je suis connecter, mais dès que je debranche le cable reseaux, il trouve plus rien...
Merci quand meme!
Si quelqu'un d'autre a une idée ou une solution, je sui preneur!
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 15 mars 2007 à 18:03
Mais loool sur le premier lien de Sat83 ! Ca doit être un fake ou c'est pas possible.
Les guid, c'est des numéros unique (Générés à partir nottement de l'adresse MAC d'ailleurs).
Y a ce code qui utilise WMI, qui n'est pas de moi, mais j'ai zappé le nom de l'auteur qui avait posté ça sur ce site.
Citation :
========================================================
Et bien voilou, j'ai trouvé une méthode qui fonctionne parfaitement bien et qui renvoi
a chaque fois de manière sûr l'adresse MAC, même lorsque le cable réseau est débranché.
voici comment faire: (utilisation de WMI)
uses ComObj, OleServer;
function MACAdresse: string;
var
WmiService : SWbemServices;
WmiObjet : SWbemObject;
wmiObjetSet: SWbemObjectSet;
ObjectEnumerator: IEnumVariant;
ArrayVariant: OleVariant;
NumberItem : LongWord;
WMILocator : TSWbemLocator;
begin
Result:= '';
WMILocator:= TSWbemLocator.Create(self);
try
try
WMILocator.Security_.Set_ImpersonationLevel(wbemImpersonationLevelImpersonate);
WMILocator.Security_.Set_AuthenticationLevel(wbemAuthenticationLevelDefault);
WmiService:= WMILocator.ConnectServer('.', 'ROOT\CIMV2', '', '', '', '', 0, nil);
except
on E:EOleException do
begin
ShowMessage(SysErrorMessage(E.ErrorCode)+' ['+IntToHex(E.ErrorCode,8)+'] '+E.Message);
Raise;
end;
end;
wmiService.Security_.Privileges.Add(wbemPrivilegeShutdown, True);
wmiObjetSet := wmiService.ExecQuery('Select * from Win32_NetworkAdapterConfiguration',
'WQL', wbemFlagReturnImmediately, nil);
ObjectEnumerator:= (WmiObjetSet._NewEnum) as IEnumVariant;
while (ObjectEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK) do
begin
WmiObjet := IUnknown(ArrayVariant) as SWBemObject;
if Boolean(WmiObjet.Properties_.Item('IPEnabled', 0).Get_Value) then
Result:= WmiObjet.Properties_.Item('MACAddress', 0).Get_Value;
end;
finally
WMILocator.Free;
end;
end;
voila, avec l'utilisation des WMI, plus de soucis, attention, il faut importer l'activeX
WbemScripting_TLB.pas
si vous avez besoin de précision sur ce code, n'hésitez pas à me contacter, je n'ai mis aucun commentaire et j'ai adapté un code source que j'avais fait pour faire des reboot à distance, d'ou le nom de certaines variables ;-)