Ler registro

Delphi

06/09/2018

Olá!

Meu objetivo é retornar o nome do windows. (Somente um exemplo prático, não quero isso realmente)
Tenho o seguinte código para ler dados do registro do windows (regedit):

procedure ReadRegistry;
var
  Registry: TRegistry;
begin
  Registry := TRegistry.Create;
  Registry.RootKey := HKEY_LOCAL_MACHINE;
  Registry.OpenKey('SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion', False);
 
  ShowMessage(Registry.ReadString('ProductName'));
 
  Registry.CloseKey;
  Registry.Free;
end;


Se eu executar essa procedure, ele me retorna o valor da chave, no caminho:
'SOFTWARE\\\\WOW6432Node\\\\Microsoft\\\\Windows NT\\\\CurrentVersion'


E não do caminho que eu quero realmente, que é:
'SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion'


Alguém sabe dizer o por quê isso ocorre ou alguma solução?
Vinicius

Vinicius

Curtidas 0

Respostas

Fabricio Kawata

Fabricio Kawata

06/09/2018

Fala Vinicius! Falando especificamente sobre dados do Sistema Operacional, desde a versão XE2 o Delphi conta com uma classe nativa que descreve o sistema operacional corrente. Ela é a TOSVersion, presente na unit SysUtils (System.SysUtils). Ela já traz propriedades que retornam o nome do SO (Name), a versão (Major e Minor), entre outras informações. Acredito que isso pode encurtar o seu trabalho. Abaixo deixo o link para o docwiki da Embarcadero que apresenta a classe.

http://docwiki.embarcadero.com/Libraries/XE2/en/System.SysUtils.TOSVersion

Espero ter te ajudado de alguma forma.

Abraço!
GOSTEI 0
Vinicius

Vinicius

06/09/2018

Olá, obrigado pelo comentário!

Então, na verdade o que descrevi no tópico é só um exemplo mesmo, para que fique nítido o entendimento, mas o que eu realmente quero, é através de um software desenvolvido no delphi, criar um valor dentro da chave especificada.

Se eu trocar essa procedure para ao invés de ler, colocar para escrever no registro, ela vai executar sem erro algum, porém, como disse no tópico, os valores lidos/escritos são puxados de um outro caminho de chave.

Lê/Escreve nesse caminho:
'SOFTWARE\\WOW6432Node\\Microsoft\\Windows NT\\CurrentVersion'


Quero ler/escrever nesse caminho:
'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'
GOSTEI 0
POSTAR