Registro Windows (TRegistry)

Delphi

30/06/2005

Eu preciso fazer backup do registro do window no caminho
HKEY_CURRENT_USER\MeuSistema.
Essa chave possui outras subchaves.
Pelo help eu verifique a existência de um método SaveKey e RestoreKey na TRegistry mas
não consigo faze-los funcionar. O SaveKey só retorna false.
Executo da seguinte froma
(...)
oReg.SaveKey(´HKEY_CURRENT_USER\MeuSistema´, ´c:\tempReg´);
(...)

Nada tem a ver com permissão de acesso ou gravação

Obrigado


Andremuller

Andremuller

Curtidas 0

Respostas

Andremuller

Andremuller

30/06/2005

Pra ser mais específico ela gera um arquivo como informado mas vazio (0 bytes). Ao executar a mensagem é sempre ´Não´

  oReg := TRegistry.Create;
  try
    oReg.RootKey := HKEY_CURRENT_USER;
    if not oReg.KeyExists(edit1.Text) then
      raise Exception.Create(´Chave não existe´);
    if oReg.SaveKey(edit1.text, ´c:\tempReg´) then
      ShowMessage(´Salvou´)
    else
      ShowMessage(´Não´);
  finally
    FreeAndNil(oReg);
  end;



GOSTEI 0
Massuda

Massuda

30/06/2005

Faltou um TRegistry.OpenKey antes de tentar o TRegistry.SaveKey.


GOSTEI 0
Andremuller

Andremuller

30/06/2005

continua dando exatamento no mesmo
var
  oReg: TRegistry;
begin
  oReg := TRegistry.Create;
  try
    oReg.RootKey := HKEY_CURRENT_USER;
    if not oReg.KeyExists(edit1.Text) then
      raise Exception.Create(´Chave não existe´);
    oReg.OpenKey(edit1.Text, False);
    if oReg.SaveKey(edit1.text, ´c:\tempReg´) then
      ShowMessage(´Salvou´)
    else
      ShowMessage(´Não´);
  finally
    FreeAndNil(oReg);
  end;



GOSTEI 0
Massuda

Massuda

30/06/2005

continua dando exatamento no mesmo
Qual o seu OS?


GOSTEI 0
Andremuller

Andremuller

30/06/2005

Windows XP Professional
sou administrador da máquina e único usuário


GOSTEI 0
Massuda

Massuda

30/06/2005

Windows XP Professional sou administrador da máquina e único usuário
Segundo a Ajuda do SDK do Windows, numa máquina com Win NT/2K/XP, não basta ser administrador da máquina (!), é preciso ainda ter os privilégios SE_BACKUP_NAME (SeBackupPrivilege) e/ou SE_RESTORE_NAME (SeRestorePrivilege) para poder usar SaveKey e/ou RestoreKey. Numa máquina com Win 9x/ME o código funciona sem problemas.

No caso do Win NT/2K/XP, imagino que isso possa ser ajustado via Painel de Controle e/ou programaticamente, mas não tenho a mínima idéia de como se faz isso.


GOSTEI 0
POSTAR