HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Hálózati kártya MAC azonosítójának lekérdezése


Példaprogram letöltése

7061 bájt

Amennyiben a számítógépünk rendelkezik hálózati kártyával, akkor arról információkat szerezhetünk, méghozzá többféle módszerrel. A hardveregység talán legfontosabb adata az úgynevezett MAC azonosítója, mely egyértelműen jellemzi a kártyát. Cikkünkben megismerhetjük, milyen módszerekkel szerezhetjük meg ezt az információt. Az első megoldás a Windows Management Instrumentation (WMI)-t, míg a második a Microsoft SQL Server adatbázis-kezelőt hívja segítségül.

A példához szükséges a MACDB adatbázis, melyet a mellékelt Run.cmd BATCH állomány lefuttatásával hozhatunk létre. Csak arra kell ügyelni, hogy a MACDB.sql parancsállomány a BATCH állománnyal azonos mappában legyen. A MACDB.sql parancsállomány 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A megoldáshoz tehát két módon juthatunk. Az első esetben a számítógépben található hálózati kártya azonosítóját (MAC Address) a Microsoft SQL Server segítségével nyerjük, míg a másik esetben –az első megoldást ellenőrizendő – a Windows Management Instrumentation (WMI) lehetőségeivel élve kaphatunk eredményt.
Megoldás SQL Server segítségével
A MACDB adatbázisban található GetMACNumber tárolt eljárásában a master adatbázis sysprocesses rendszertáblájának azon rekordjának net_address oszlopértékét olvassuk ki, mely az aktuális process-hez tartozik, vagyis ahol a SID mező értéke megegyezik a @@SPID konstans értékével. A konstans az adott felhasználóhoz kapcsolódó process-azonosítót hordozza.
A tárolt eljárásban szükségünk van hat változóra, melyek a kapott karakterlánc részláncait hordozzák a lekérdezések után.
Create procedure GetMACNumber (@mac char(17) output )
AS
  DECLARE @elso char(2)
  DECLARE @masodik char(2)
  DECLARE @harmadik char(2)
  DECLARE @negyedik char(2)
  DECLARE @otodik char(2)
  DECLARE @hatodik char(2)
A lekérdezés hatszor a következő:
  SELECT  @elso = substring(net_address,1,2)
  FROM master..sysprocesses
  WHERE spid = @@SPID
  ...
A karakterláncokat összefűzzük és eltároljuk az output paraméterben.
  SET @mac = @elso + ':' + @masodik + ':' + @harmadik + ':' + @negyedik + ':' + @otodik + ':' + @hatodik
A megoldás eredményét a Form szövegmezőjében jelenítjük meg. A tárolt eljárás meghívásához az ADO fül elemeit használjuk fel, nevezetesen egy ADOCommand és egy ADOConnection objektumot. A hívás a következőképpen történik:
with DM.ADOCommand1 do begin
  Execute;
  Edit1.Text := Parameters[1].Value;
end;
Az eredmény az első paraméter kiolvasásával kapható meg.
Megoldás a WMI segítségével
A WMI megfelelő objektumát egy Visual Basic nyelven megírt parancsállomány segítségével érhetjük el. A kód a WMIMAC.vbs állományban található, ezt indítjuk el programunkban.
A művelet eredményeképpen egy listát jelenítünk meg egy üzenetpanelen, mely tartalmazza a kártyák nevét és MAC címét.
A GetObject metódus segítségével elérhetjük a szükséges objektumot, ennek módja a következő:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Az objektum ExecQuery metódusának segítségével kérdezhetjük le egy kollekcióba a kívánt adatokat úgy, hogy átadjuk paraméterként a kérési szempontokat, jelen esetben a „Select * from Win32_NetworkAdapter” karakterláncot.
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter",,48)
Ezt követően már csak végig kell mennünk a kollekción és lekérdezni a számtalan tulajdonság közül azokat, melyek a feladat szempontjából érdekesek.
For Each objItem in colItems
  If Not (objItem.MACAddress = "") Then 
    text = text & "Name : " & objItem.Name & " MACAddress: " & objItem.MACAddress & Chr(13)    
  End If
Next
A megoldás szempontjából a kártya neve és MAC címe fontos, így a panelre csak azokat írjuk ki.



Cikksorozat

#IDKategóriaCikk címeSorozat
4397Windows.NET Framework konfigurálása az operációs rendszerben1. rész
4446Windows.NET Framework konfigurációs snap-in2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 669. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |