Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Извлечь адреса сетевых карт

Delphi , Интернет и Сети , Сеть

Извлечь адреса сетевых карт

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{for NT4 and Windows 2000, and you must have Admin privileges}
 {fьr NT4 und Windows 2000, und Adminrechte erforderlich}

 uses
  Registry;

 const
   nString = 'SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\NetworkCards';
   nEthernet = 'Ethernet';
   nEtherjet = 'Etherjet'; {if Hardware IBM PL300 with Chip 10/100}
   nTcpIp1 = 'SYSTEM\CurrentControlSet\Services\';
   nTcpIp2 = '\Parameters\Tcpip';

 var
   reg: TRegistry;
   buffer1, buffer2, buffer3: array [1..32] of Char;
   i: Integer;
   ipaddress, subnetmask, DefaultGateway: string;
   Adapter, Adapter_Key: string;
   stringlist: TStrings;

 function search_adapter_key: string;
 var
   astring, description, st: string;
   nPos: integer;
   ServiceName: string;
 begin
   reg := TRegistry.Create;
   stringlist  := TStringList.Create;
   reg.RootKey := HKEY_LOCAL_MACHINE;
   reg.OpenKey(nString, False);
   reg.GetKeyNames(stringlist);    {search all subkeys 
                                   such alle unterschlьssel}
   reg.CloseKey;

   for i := 0 to (stringlist.Count - 1) do
   begin
     st := stringlist[i];
     aString := nString + '\' + st;
     reg := TRegistry.Create;
     reg.RootKey := HKEY_LOCAL_MACHINE;
     reg.OpenKey(aString, False);
     description := reg.ReadString('Description');
     nPos:= AnsiPos(nEthernet, description); {search description for string Ethernet 
                                             Beschreibung nach dem string Ethernet absuchen}
     if nPos > 0 then
     begin
       ServiceName := reg.ReadString('ServiceName');
       Adapter_Key := nTcpIp1 + ServiceName + nTcpIp2;
     end;
     nPos := AnsiPos(nEtherjet, description); {search description for string 'Etherjet 
                                              if IBM PL300 with MotherboardChip}
     if nPos > 0 then
     begin
       ServiceName := reg.ReadString('ServiceName');
       Adapter_Key := nTcpIp1 + ServiceName + nTcpIp2;
     end;

     reg.CloseKey;
   end;
   Result := Adapter_Key;
 end;

 procedure search_for_adapter_NT;
 var
   BufSize: Integer;    {Bufsize requested but not used 
                        Bufsize erforderlich aber nicht benutzt}
 begin
   adapter := search_adapter_key;
   if adapter <> '' then
   begin
     Reg := TRegistry.Create;
     try
       Reg.RootKey := HKEY_LOCAL_MACHINE;
       Reg.OpenKey(adapter, False);
       Reg.ReadBinaryData('IpAddress', buffer1, BufSize);
     finally
       Reg.CloseKey;
       Reg.Free;
     end;

     Reg := TRegistry.Create;
     try
       Reg.RootKey := HKEY_LOCAL_MACHINE;
       Reg.OpenKey(adapter, False);
       Reg.ReadBinaryData('SubnetMask', buffer2, BufSize);
     finally
       Reg.CloseKey;
       Reg.Free;
     end;

     Reg := TRegistry.Create;
     try
       Reg.RootKey := HKEY_LOCAL_MACHINE;
       Reg.OpenKey(adapter, False);
       Reg.ReadBinaryData('DefaultGateway', buffer3, BufSize);
     finally
       Reg.CloseKey;
       Reg.Free;
     end;
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   Memo1.Clear;
   search_for_adapter_NT;
   Memo1.Lines.Add(buffer1);
   Memo1.Lines.Add(buffer2);
   Memo1.Lines.Add(buffer3);
 end;

Программа на Delphi, которая извлекает адрес IP, маску подсети и шлюз по умолчанию для адаптеров сети на системе Windows. Программа использует реестр Windows для чтения этих значений.

Вот разбивка кода:

  1. Функция search_adapter_key ищет ключ каждого адаптера сети в реестре, проверяет, содержит ли он строки "Ethernet" или "Etherjet", и возвращает имя ключа, если найден.
  2. Процедура search_for_adapter_NT использует функцию search_adapter_key для поиска ключа адаптера сети, а затем читает значения адреса IP, маски подсети и шлюза по умолчанию из реестра с помощью метода ReadBinaryData.
  3. Событийный обработчик кнопки Button1Click вызывает процедуру search_for_adapter_NT, очищает контроль Memo и добавляет прочитанные значения в Memo.

Программа использует следующие константы:

  • nString: Ключ реестра для адаптеров сети (SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards).
  • nEthernet: Строка "Ethernet".
  • nEtherjet: Строка "Etherjet" (используется для IBM PL300 с Motherboard Chip).
  • nTcpIp1 и nTcpIp2: Ключи реестра для настроек TCP/IP (SYSTEM\CurrentControlSet\Services\Parameters\Tcpip).

Программа использует следующие переменные:

  • reg: Объект TRegistry, используемый для доступа к реестру.
  • buffer1, buffer2, buffer3: Байтовые массивы для хранения прочитанных значений.
  • i: Целочисленная переменная, используемая как индекс.
  • Adapter и Adapter_Key: Строковые переменные для хранения имени ключа адаптера.
  • stringlist: Объект TStringList, используемый для хранения списка подключений.

Программа использует следующие процедуры:

  • search_adapter_key: Ищет ключ каждого адаптера сети в реестре, проверяет, содержит ли он строки "Ethernet" или "Etherjet", и возвращает имя ключа, если найден.
  • search_for_adapter_NT: Использует функцию search_adapter_key для поиска ключа адаптера сети, а затем читает значения адреса IP, маски подсети и шлюза по умолчанию из реестра с помощью метода ReadBinaryData.

Обратите внимание, что эта программа требует административных прав и работает только на системах Windows NT4 и Windows 2000.

Извлечь адреса сетевых карт: программа на языке Delphi, которая извлекает и выводит информацию о сетевых адаптерах в системе Windows NT4 и Windows 2000.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сеть ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 14:21:15/0.0038011074066162/0