- Yazma kısmını silerek sadece okuma kısmını bir proje haline getirdim. Bu linkten indirip denersin.
- Bu kodları sindirmen zaman alacak.
Kaynak Kodu :
Kod: Tümünü seç
Uses Registry;
Procedure ListeIcineNICveGUID( Bilgiler:TStrings );
Const
NetworkKEY = '\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}';
Var
Reg : TRegistry;
strKey,
strDriverDesc,
strNetCfgInstanceId : String;
Liste : TStringList;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKeyReadonly( NetworkKEY ) then
begin
Liste := TStringList.Create;
Reg.GetKeyNames( Liste );
while Liste.Count > 0 do
begin
// Tekrar bir önceki, üst ağaç dalına dönüyoruz...
Reg.OpenKeyReadonly( NetworkKEY );
strKey := Liste[0];
if Reg.KeyExists(strKey) then
begin
Reg.OpenKeyReadOnly( strKey );
strDriverDesc := Reg.ReadString('DriverDesc');
strNetCfgInstanceId := Reg.ReadString('NetCfgInstanceId');
if ( Pos( 'ETHERNET', UpperCase(strDriverDesc) ) > 0 )
or ( Pos( 'LAN', UpperCase(strDriverDesc) ) > 0 )
or ( Pos( 'NIC', UpperCase(strDriverDesc) ) > 0 )
then Bilgiler.Add( Format('"%s" : %s', [strDriverDesc, strNetCfgInstanceId]) );
end;
Liste.Delete(0);
end;
Liste.Free;
end;
Reg.Free;
end;
Type tIPBilgileri = Record
OtomatikIP : Boolean;
DhcpIPAddress,
DhcpNameServer,
DhcpServer,
DhcpSubnetMask,
DhcpDefaultGateway,
IPAddress,
SubnetMask,
DNS1, DNS2 : String;
end;
Function IpBilgileriAl( NetCfgInstanceId: String ):tIPBilgileri;
Const
AyarlarKEY = '\SYSTEM\ControlSet001\services\Tcpip\Parameters\Interfaces';
Var
Reg : TRegistry;
strDeger : String;
DataType,
DataSize : Cardinal;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKeyReadonly( AyarlarKEY + '\' + NetCfgInstanceId );
Result.DhcpIPAddress := Reg.ReadString('DhcpIPAddress'); // REG_SZ
Result.DhcpNameServer := Reg.ReadString('DhcpNameServer'); // REG_SZ
Result.DhcpServer := Reg.ReadString('DhcpServer'); // REG_SZ
Result.DhcpSubnetMask := Reg.ReadString('DhcpSubnetMask'); // REG_SZ
if Reg.ReadInteger('EnableDHCP' ) = 1 // REG_DWORD
then Result.OtomatikIP := True
else Result.OtomatikIP := False;
if Reg.ValueExists('DhcpDefaultGateway') then // REG_MULTI_SZ
begin
RegQueryValueEx( Reg.CurrentKey, PChar('DhcpDefaultGateway'), nil, @DataType, nil, @DataSize);
SetLength(strDeger, DataSize - 1);
if 0 = RegQueryValueEx( Reg.CurrentKey, PChar('DhcpDefaultGateway'), nil, @DataType, PByte(strDeger), @DataSize)
then Result.DhcpDefaultGateway := strDeger;
end;
if Reg.ValueExists('IPAddress') then // REG_MULTI_SZ
begin
RegQueryValueEx( Reg.CurrentKey, PChar('IPAddress'), nil, @DataType, nil, @DataSize);
SetLength(strDeger, DataSize - 1);
if 0 = RegQueryValueEx( Reg.CurrentKey, PChar('IPAddress'), nil, @DataType, PByte(strDeger), @DataSize)
then Result.IPAddress := strDeger;
end;
if Reg.ValueExists('SubnetMask') then // REG_MULTI_SZ
begin
RegQueryValueEx( Reg.CurrentKey, PChar('SubnetMask'), nil, @DataType, nil, @DataSize);
SetLength(strDeger, DataSize - 1);
if 0 = RegQueryValueEx( Reg.CurrentKey, PChar('SubnetMask'), nil, @DataType, PByte(strDeger), @DataSize)
then Result.SubnetMask := strDeger;
end;
strDeger := Reg.ReadString( 'NameServer' ); // REG_SZ
if Pos(',', strDeger) > 0 then
begin
Result.DNS1 := Copy(strDeger, 1, Pos(',', strDeger)-1);
System.Delete(strDeger, 1, Pos(',', strDeger) );
Result.DNS2 := Trim( strDeger );
end;
Reg.Free;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Label1.Enabled := NOT CheckBox1.Checked;
Label2.Enabled := NOT CheckBox1.Checked;
Edit1.Enabled := NOT CheckBox1.Checked;
Edit2.Enabled := NOT CheckBox1.Checked;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
Var
strNetCfgInstanceId : String;
Bilgiler : tIPBilgileri;
begin
if TComboBox(Sender).ItemIndex >= 0 then
begin
strNetCfgInstanceId := TComboBox(Sender).Items[TComboBox(Sender).ItemIndex];
System.Delete( strNetCfgInstanceId, 1, Pos('" :', strNetCfgInstanceId) + 3 );
Bilgiler := IpBilgileriAl( strNetCfgInstanceId );
Edit1.Text := Bilgiler.IPAddress;
Edit2.Text := Bilgiler.SubnetMask;
Edit3.Text := Bilgiler.DNS1;
Edit4.Text := Bilgiler.DNS2;
CheckBox1.Checked := Bilgiler.OtomatikIP;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ComboBox1.Style := csDropDownList;
ComboBox1.Items.Clear;
// Bizim Network kart(lar)ı tespit Procedure
ListeIcineNICveGUID( ComboBox1.Items );
if ComboBox1.Items.Count > 0 then ComboBox1.ItemIndex := 0;
ComboBox1Change(ComboBox1);
end;