Criar valor em chave do registro do Windows

Delphi

11/12/2008

Tenho que desenvolver um código para meu sistema para verificar se no registro do Windows existe uma chave com o caminho do banco de dados
indicando que o sistema esta registrado naquele terminal.
Vejam meu código:

procedure TFormRegistro.btnConfirmarClick(Sender: TObject);
var
Registry : TRegistry;
KeyName, _pstrPastaBanco : String;
begin
if Trim(edtCaminhoBanco.Text) <> ´´ then ==> D:\Base Teste\BASETESTE.FDB
begin
if Application.MessageBox(´Deseja realmente registrar este terminal?´, ´DBExpress´, MB_YESNO + MB_ICONQUESTION) = mrYes then
begin
try
_pstrPastaBanco := ´\SOFTWARE\Teste_DB_Express´;
Registry := TRegistry.Create(KEY_READ);
Registry.RootKey := HKEY_LOCAL_MACHINE;
Registry.OpenKey(_pstrPastaBanco, True); ==> HKEY_LOCAL_MACHINE\SOFTWARE
Registry.WriteString(´Database´, ´D:\Base Teste\BASETESTE.FDB´)); ==> Aqui ocorre o erro Failed to set data for ´Database´
Registry.CloseKey;
finally
Registry.Free;
end;
end;
end;
end;

Dentro de HKEY_LOCAL_MACHINE\SOFTWARE É criada a chave Teste_DB_Express ficando HKEY_LOCAL_MACHINE\SOFTWARE\Teste_DB_Express. Até aqui tudo bem.
O erro apontado acima acontece porque tem que ser criado dentro de Teste_DB_Express o valor ´Database´ e dentro de Database o caminho do banco de dados
que é D:\Base Teste\BASETESTE.FDB e com isso registrando o sistema naquele terminal. Me ajudem na linha que acontece o erro.
Valeu.


Developer1978

Developer1978

Curtidas 0

Respostas

Paullsoftware

Paullsoftware

11/12/2008

amigo acho que o código abaixo vai te ajudar, mas dá uma pesquisada nos forum sobre TRegistry e vai encontrar muito coisa sobre!
Inclua na seção uses: Registry
Coloque no form dois edits e dois botões.
No evento OnClick do Button1 escreva o código abaixo:
procedure TForm1.Button1Click(Sender: TObject); 
var 
Reg: TRegistry; 
begin 
Reg := TRegistry.Create; 
try 
{ Define a chave-raiz do registro } 
Reg.RootKey := HKEY_CURRENT_USER; 
{ Abre a chave (path). Se não existir, cria e abre. } 
Reg.OpenKey(´MeuPrograma\Configuração´, true); 
{ Escreve um inteiro } 
Reg.WriteInteger(´Numero´, StrToInt(Edit1.Text)); 
{ Escreve uma string } 
Reg.WriteString(´Nome´, Edit2.Text); 
finally 
Reg.Free; 
end; 
end; 
No evento OnClick do Button2, escreva:
procedure TForm1.Button2Click(Sender: TObject); 
var 
Reg: TRegistry; 
begin 
Reg := TRegistry.Create; 
try 
Reg.RootKey := HKEY_CURRENT_USER; 
if Reg.KeyExists(´MeuPrograma\Configuração´) then 
begin 
Reg.OpenKey(´MeuPrograma\Configuração´, false); 
if Reg.ValueExists(´Numero´) then 
Edit1.Text := IntToStr(Reg.ReadInteger(´Numero´)) 
else 
ShowMessage(´Não existe valor com o nome "Numero"´); 
if Reg.ValueExists(´Nome´) then 
Edit2.Text := Reg.ReadString(´Nome´) 
else 
ShowMessage(´Não existe valor com o nome "Nome"´); 
end else 
ShowMessage(´Não existe a chave no registro´); 
finally 
Reg.Free; 
end; 
end; 

espero ter ajudado! :wink:


GOSTEI 0
POSTAR