GroundFloor
asked on
Network cards
Anyone know how to get a list of installed network cards (needs to be able to get all names of nics installed not just one) and their mac addresses?
ASKER
Thanks tomerlei - i know the cards are listed in the registry - just wondered how it could be done to get them all in a stringlist 9or memo) along with each mac address of the card
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Here is code with more info involved:
program GetAdapters;
{$APPTYPE CONSOLE}
uses
SysUtils,Types,Windows;
const
MAX_ADAPTER_NAME_LENGTH = 256;
MAX_ADAPTER_DESCRIPTION_LE NGTH = 128;
MAX_ADAPTER_ADDRESS_LENGTH = 8;
TnTYPE:array[0..28] of AnsiString=('','','','','' ,'','Ether net','','' ,'Token ring','','','','','','FDDI ','','','' ,'','','', '','PPP',' Loopback', '','','',' Slip');
type
PrIP_ADDRESS=^TrIP_ADDRESS ;
TrIP_ADDRESS=record
Next:PrIP_ADDRESS;
IpAddress:array[0..15] of Char;
IpMask:array[0..15] of Char;
Context:DWORD;
end;
PrADAPTER=^TrADAPTER;
TrADAPTER=record
FNext:PrADAPTER;
FComboIndex:DWORD;
FAdapterName:array[0..MAX_ ADAPTER_NA ME_LENGTH+ 3] of Char;
FDescription:array[0..MAX_ ADAPTER_DE SCRIPTION_ LENGTH+3] of Char;
FAddrLen:UINT;
FAddress:array[0..MAX_ADAP TER_ADDRES S_LENGTH-1 ] of Byte;
FIndex:DWORD;
FType:UINT;
FDHCPEnabled:UINT;
FCurrentIpAddress:PrIP_ADD RESS;
FIpAddressList:TrIP_ADDRES S;
FGatewayList:TrIP_ADDRESS;
FDHCPServer:TrIP_ADDRESS;
FHaveWins:BOOL;
FPrimaryWinsServer:TrIP_AD DRESS;
FSecondaryWinsServer:TrIP_ ADDRESS;
FLeaseObtained:Longint;
FLeaseExpires:Longint;
end;
function GetAdaptersInfo(pAdapterIn fo:PrADAPT ER;pOutput Buffer:PUL ONG):DWORD ;stdcall;e xternal 'IPHlpAPI.dll' name 'GetAdaptersInfo';
var
A,Size:DWORD;
Info:PrADAPTER;
begin
GetAdaptersInfo(Info,@Size );
GetMem(Info,Size);
GetAdaptersInfo(Info,@Size );
// just printout - not needed
repeat
WriteLn('Index: ',IntToStr(Info^.FComboInd ex));
WriteLn('Type : ',TnTYPE[Info^.FType]);
WriteLn('Name : ',AnsiString(Info^.FDescri ption));
WriteLn('IP : ',PChar(@Info^.FIpAddressL ist.IpAddr ess));
WriteLn('Mask : ',PChar(@Info^.FIpAddressL ist.IpMask ));
WriteLn('G-way: ',PChar(@Info^.FGatewayLis t.IpAddres s));
WriteLn('DHCP : ',PChar(@Info^.FDHCPServer .IpAddress ));
Write('MAC : ');
for A:=0 to Info^.FAddrLen-1 do
begin
Write(IntToHex(Info^.FAddr ess[A],2)) ;
if A<Info^.FAddrLen-1 then Write('-') else WriteLn(#13#10);
end;
Info:=Info^.FNext;
until not Assigned(Info);
ReadLn;
end.
regards,
Kate
program GetAdapters;
{$APPTYPE CONSOLE}
uses
SysUtils,Types,Windows;
const
MAX_ADAPTER_NAME_LENGTH = 256;
MAX_ADAPTER_DESCRIPTION_LE
MAX_ADAPTER_ADDRESS_LENGTH
TnTYPE:array[0..28] of AnsiString=('','','','',''
type
PrIP_ADDRESS=^TrIP_ADDRESS
TrIP_ADDRESS=record
Next:PrIP_ADDRESS;
IpAddress:array[0..15] of Char;
IpMask:array[0..15] of Char;
Context:DWORD;
end;
PrADAPTER=^TrADAPTER;
TrADAPTER=record
FNext:PrADAPTER;
FComboIndex:DWORD;
FAdapterName:array[0..MAX_
FDescription:array[0..MAX_
FAddrLen:UINT;
FAddress:array[0..MAX_ADAP
FIndex:DWORD;
FType:UINT;
FDHCPEnabled:UINT;
FCurrentIpAddress:PrIP_ADD
FIpAddressList:TrIP_ADDRES
FGatewayList:TrIP_ADDRESS;
FDHCPServer:TrIP_ADDRESS;
FHaveWins:BOOL;
FPrimaryWinsServer:TrIP_AD
FSecondaryWinsServer:TrIP_
FLeaseObtained:Longint;
FLeaseExpires:Longint;
end;
function GetAdaptersInfo(pAdapterIn
var
A,Size:DWORD;
Info:PrADAPTER;
begin
GetAdaptersInfo(Info,@Size
GetMem(Info,Size);
GetAdaptersInfo(Info,@Size
// just printout - not needed
repeat
WriteLn('Index: ',IntToStr(Info^.FComboInd
WriteLn('Type : ',TnTYPE[Info^.FType]);
WriteLn('Name : ',AnsiString(Info^.FDescri
WriteLn('IP : ',PChar(@Info^.FIpAddressL
WriteLn('Mask : ',PChar(@Info^.FIpAddressL
WriteLn('G-way: ',PChar(@Info^.FGatewayLis
WriteLn('DHCP : ',PChar(@Info^.FDHCPServer
Write('MAC : ');
for A:=0 to Info^.FAddrLen-1 do
begin
Write(IntToHex(Info^.FAddr
if A<Info^.FAddrLen-1 then Write('-') else WriteLn(#13#10);
end;
Info:=Info^.FNext;
until not Assigned(Info);
ReadLn;
end.
regards,
Kate
ASKER
Katka - thanks, i'll give you code a try out and get back to you.
ASKER
That worked just as i wanted Katka - thanks a lot
You're welcome :)
HKLM\Software\Microsoft\Wi
about the mac address i still need to check.