Registro Windows (TRegistry)
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
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
Curtidas 0
Respostas
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
30/06/2005
Faltou um TRegistry.OpenKey antes de tentar o TRegistry.SaveKey.
GOSTEI 0
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
30/06/2005
continua dando exatamento no mesmo
Qual o seu OS?GOSTEI 0
Andremuller
30/06/2005
Windows XP Professional
sou administrador da máquina e único usuário
sou administrador da máquina e único usuário
GOSTEI 0
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