Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Pegar registros do windows


robinhocne

Pergunta

Bom dia,

  há uns dias estava com um problema onde necessitava alterar o IP do pc, consegui porém essa façanha necessita passar o nome do adaptador de rede, infelizmente para cada sistema operacional isso muda e hoje descobri que piora mais ainda quando uma placa de rede queima, quando temos wifi, maquina  virtual e etc, então uma solução que estou procurando para capturar o nome desse adaptador é vasculhando os registros do windows, acho que encontrei o caminho certo, porém como nem tudo é simples.... a lista de adaptadores aparece dessa forma nos registros do windows

o Caminho dos registros é :

Computador\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}

Porém eu tenho uma lista enorme, isso porque sinceramente não parei para analisar, a situação é que eu teria que percorrer essas pastas, entrar e pegar o Name dentro do Connection e só assim eu conseguirei obter o que necessito;

Screenshot_6.png

 

Outros adaptadores que são inativos, ou não existe fica dessa maneira;

Screenshot_5.png

 

Como faço isso ? pegar o nome especifico eu consegui, porém nesse caso terei que percorrer essas pastas e em cada uma acessar o Connection e pegar quem está ativo.

 

Screenshot_4.png

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Isso não vai ser tão trivial de se fazer:

voce vai ter que abrir o registro principal da conexão de rede

' HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\'

depois voce deve criar uma variavel tipo TStringList para armazenar os nomes das chaves

a lista que começa com {4D36E972-E325-11CE-BFC1-08002BE10318}

use um comando For ( Loop ) para varrer todos os valores dessas chaves

depois voce deve abrir novamente o registro do windows, mas agora adicionando o valor das chaves que estão no TStringlist ... dessa forma voce vai obter em outra variavel tipo TStringlist o valor das SubChaves  ( {01DC30F1-64F-4A47-98C4-3171498119F7} )

depois voce deve abrir novamente o registro do windows, mas agora adicionando o valor das chaves que estão no 1º TStringlist + o valor das chaves que estão no 2º TStringlist... dessa forma voce vai obter em outra variavel tipo TStringlist o valor das proximas SubChaves ( nesse caso voce já tera a SubChave  Connection )

agora  voce já tem toda a path do registro

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{01DC30F1-64F-4A47-98C4-3171498119F7}\Connection

nesse ponto bastara voce ler o valor de "Name" para obter o nome conexão da rede

Conexão local 3

OBS: Se isso deu um nó na cabeça e voce não tem nem idéia de como começar, leia esse artigo... tem tudo o que voce vai precisar para resolver essa dúvida.

procure pelo método reg.GetKeyNames e reg.GetValueNames.

http://www.forum-invaders.com.br/vb/showthread.php/14762-Manipulando-o-registro-do-Windows-Delphi?s=aada232bfdf47ec5aea40950903f8df4

abraço

 

Link para o comentário
Compartilhar em outros sites

  • 0

valeu Jhonas, consegui, me ajudou muito sua explicação e esse artigo também;

 

implementation

{$R *.dfm}

uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var reg, subReg: TRegistry;
    chaves, chaves1: TStringList;
    i:integer;
    caminho : String;
begin

  caminho := '\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\';
  Reg         := TRegistry.Create;
  Reg.Access  := KEY_READ;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey(caminho,false);
  chaves := TStringList.Create;
  reg.GetKeyNames(chaves);


  subReg         := TRegistry.Create;
  subReg.Access  := KEY_READ;
  subReg.RootKey := HKEY_LOCAL_MACHINE;
  chaves1 := TStringList.Create;

  for i :=0 to chaves.Count -1 do
    begin
      subreg.OpenKey(caminho+chaves[i],false);
      subReg.GetKeyNames(chaves1);

      //ShowMessage('\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\'+chaves[i]+'\Connection');

      if (copy(chaves[i],0,1) = '{') then
        begin
         // ShowMessage(chaves1.strings[0]);
          reg.OpenKey(caminho+chaves[i]+'\'+chaves1.strings[0],false);
          //reg.GetKeyNames(chaves1);
         ShowMessage(reg.ReadString('PnPInstanceId'));
         if (reg.ReadString('PnPInstanceId') <> '') then
           cbAdaptador.Items.Add(reg.ReadString('Name'));
        end;

    end;


  reg.CloseKey();
  reg.free;
  chaves.free;
  subReg.CloseKey();
  subReg.free;
  chaves1.free;

end;

end.

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...