Onde está o erro (TRegistry) ???
Olá pessoal, tudo bem?
Estou tendo problemas para usar algumas rotinas desconhecidas (ou pouco utilizadas) do TRegistry.
Antes de perguntar, quero deixar claro que já vi no help e já pesquisei no google, etc. No help consegui solucionar a função KeySave para salvar no arquivo .reg (em formato binário), mas a função RestoreKey não consegui recuperar a bendita chave salva no arquivo. [b:9b01a1b05a]Tentei de diversas formas[/b:9b01a1b05a] mas não obtive sucesso. Claro, renomeei a pasta no registro para saber se foi recuperado e não deu em nada.
Estou usando o seguinte código para salvar (testei e funfa 100¬):
[b:9b01a1b05a]procedure[/b:9b01a1b05a] TForm1.Button1Click([b:9b01a1b05a]Sender[/b:9b01a1b05a]: TObject);
[b:9b01a1b05a]const[/b:9b01a1b05a]
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
[b:9b01a1b05a]var[/b:9b01a1b05a]
_Reg : TRegistry;
_sFile : [b:9b01a1b05a]String[/b:9b01a1b05a];
[b:9b01a1b05a]begin[/b:9b01a1b05a]
__sFile:=ExpandFileName(ExtractFilePath(Application.ExeName)+´backup.reg´);
__Reg.TRegistry.Create;
__Reg.RootKey:=HKEY_ROOT_KEY; (* Não lembro, é a primeira *)
__Reg.Access:=KEY_ALL_ACCESS;
__[b:9b01a1b05a]if[/b:9b01a1b05a] Reg.SaveKey(CKey,sFile) = False then
___ShowMessage(´[i:9b01a1b05a]Ocorreu um erro: Ou você fez algo errado, ou não criou aquela chave no registro (sem a chave, vai fazer backup de que?), ou você está executando o aplicativo nas pastas [b:9b01a1b05a]´Meus Documentos´[/b:9b01a1b05a] ou [b:9b01a1b05a]´Arquivos de Programas´[/b:9b01a1b05a] ou uma de suas [b:9b01a1b05a]sub-pastas[/b:9b01a1b05a], coisa que não é permitido e não me pergunte ´o por quê´[/i:9b01a1b05a] :lol: ´);
__Reg.Free;
[b:9b01a1b05a]end[/b:9b01a1b05a];
[b:9b01a1b05a]----------------------------------------------------------------------------[/b:9b01a1b05a]
Para recuperar está dando erro, queria saber se voce sabe onde está o erro e, caso não saiba e quiser ver no help poderá ver que não estou fazendo nada de errado:
(* É claro que eu renomeei a chave para que possa ser recuperado (no registro do windows). *)
[b:9b01a1b05a]procedure[/b:9b01a1b05a] TForm1.Button2Click([b:9b01a1b05a]Sender[/b:9b01a1b05a]: TObject);
[b:9b01a1b05a]const[/b:9b01a1b05a]
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
(* Tentei color somente ´\CLSID\´
[b:9b01a1b05a]var[/b:9b01a1b05a]
_Reg : TRegistry;
_sFile : [b:9b01a1b05a]String[/b:9b01a1b05a];
[b:9b01a1b05a]begin[/b:9b01a1b05a]
__sFile:=ExpandFileName(ExtractFilePath(Application.ExeName)+´backup.reg´);
__Reg.TRegistry.Create;
__Reg.RootKey:=HKEY_ROOT_KEY; (* Não lembro, é a primeira *)
__Reg.Access:=KEY_ALL_ACCESS;
__Reg.RestoreKey(CKey,sFile);
(* Tentei também com osvalores boolean como na função SaveKey dita acima e não tive sucesso, fiz várias alterações e a droga não consegue recuperar, o arquivo backup.reg está na pasta do executável como informa no link da variável, não consigo ver onde estou errando *)
__Reg.Free;
[b:9b01a1b05a]end[/b:9b01a1b05a];
Agradeço a todos que venham a solucionar, só peço que façam um teste antes, pois até vendo o help e fazendo não consegui desvendar este mistério, a outra função eu tive alguns probleminhas mas foi resolvido quando acessei o help do Delphi, quantoa este outro (RestoreKey) NADA...
:wink:
Falowww
Estou tendo problemas para usar algumas rotinas desconhecidas (ou pouco utilizadas) do TRegistry.
Antes de perguntar, quero deixar claro que já vi no help e já pesquisei no google, etc. No help consegui solucionar a função KeySave para salvar no arquivo .reg (em formato binário), mas a função RestoreKey não consegui recuperar a bendita chave salva no arquivo. [b:9b01a1b05a]Tentei de diversas formas[/b:9b01a1b05a] mas não obtive sucesso. Claro, renomeei a pasta no registro para saber se foi recuperado e não deu em nada.
Estou usando o seguinte código para salvar (testei e funfa 100¬):
[b:9b01a1b05a]procedure[/b:9b01a1b05a] TForm1.Button1Click([b:9b01a1b05a]Sender[/b:9b01a1b05a]: TObject);
[b:9b01a1b05a]const[/b:9b01a1b05a]
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
[b:9b01a1b05a]var[/b:9b01a1b05a]
_Reg : TRegistry;
_sFile : [b:9b01a1b05a]String[/b:9b01a1b05a];
[b:9b01a1b05a]begin[/b:9b01a1b05a]
__sFile:=ExpandFileName(ExtractFilePath(Application.ExeName)+´backup.reg´);
__Reg.TRegistry.Create;
__Reg.RootKey:=HKEY_ROOT_KEY; (* Não lembro, é a primeira *)
__Reg.Access:=KEY_ALL_ACCESS;
__[b:9b01a1b05a]if[/b:9b01a1b05a] Reg.SaveKey(CKey,sFile) = False then
___ShowMessage(´[i:9b01a1b05a]Ocorreu um erro: Ou você fez algo errado, ou não criou aquela chave no registro (sem a chave, vai fazer backup de que?), ou você está executando o aplicativo nas pastas [b:9b01a1b05a]´Meus Documentos´[/b:9b01a1b05a] ou [b:9b01a1b05a]´Arquivos de Programas´[/b:9b01a1b05a] ou uma de suas [b:9b01a1b05a]sub-pastas[/b:9b01a1b05a], coisa que não é permitido e não me pergunte ´o por quê´[/i:9b01a1b05a] :lol: ´);
__Reg.Free;
[b:9b01a1b05a]end[/b:9b01a1b05a];
[b:9b01a1b05a]----------------------------------------------------------------------------[/b:9b01a1b05a]
Para recuperar está dando erro, queria saber se voce sabe onde está o erro e, caso não saiba e quiser ver no help poderá ver que não estou fazendo nada de errado:
(* É claro que eu renomeei a chave para que possa ser recuperado (no registro do windows). *)
[b:9b01a1b05a]procedure[/b:9b01a1b05a] TForm1.Button2Click([b:9b01a1b05a]Sender[/b:9b01a1b05a]: TObject);
[b:9b01a1b05a]const[/b:9b01a1b05a]
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
(* Tentei color somente ´\CLSID\´
[b:9b01a1b05a]var[/b:9b01a1b05a]
_Reg : TRegistry;
_sFile : [b:9b01a1b05a]String[/b:9b01a1b05a];
[b:9b01a1b05a]begin[/b:9b01a1b05a]
__sFile:=ExpandFileName(ExtractFilePath(Application.ExeName)+´backup.reg´);
__Reg.TRegistry.Create;
__Reg.RootKey:=HKEY_ROOT_KEY; (* Não lembro, é a primeira *)
__Reg.Access:=KEY_ALL_ACCESS;
__Reg.RestoreKey(CKey,sFile);
(* Tentei também com osvalores boolean como na função SaveKey dita acima e não tive sucesso, fiz várias alterações e a droga não consegue recuperar, o arquivo backup.reg está na pasta do executável como informa no link da variável, não consigo ver onde estou errando *)
__Reg.Free;
[b:9b01a1b05a]end[/b:9b01a1b05a];
Agradeço a todos que venham a solucionar, só peço que façam um teste antes, pois até vendo o help e fazendo não consegui desvendar este mistério, a outra função eu tive alguns probleminhas mas foi resolvido quando acessei o help do Delphi, quantoa este outro (RestoreKey) NADA...
:wink:
Falowww
Onjahyr
Curtidas 0
Respostas
Onjahyr
13/05/2004
Uma correção apenas:
procedure TForm1.Button2Click(Sender: TObject);
const
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
(* Tentei color somente ´\CLSID\´
var
A mesma deve ser retirada do registry para que se possa recuperar e não como mensiona que deve ser criada, é que copiei o texto e colei, depois que fui ver, também o texto: (* Tentei color somente ´\CLSID\´
Deveria ser:
(* Tentei colocar somente ´\CLSID\´ ou ´\CLSID´, etc...
Falowww
procedure TForm1.Button2Click(Sender: TObject);
const
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
(* Tentei color somente ´\CLSID\´
var
A mesma deve ser retirada do registry para que se possa recuperar e não como mensiona que deve ser criada, é que copiei o texto e colei, depois que fui ver, também o texto: (* Tentei color somente ´\CLSID\´
Deveria ser:
(* Tentei colocar somente ´\CLSID\´ ou ´\CLSID´, etc...
Falowww
GOSTEI 0
Onjahyr
13/05/2004
Ninguém tem sugestões? :cry:
Faloww
Faloww
GOSTEI 0
Giancarlo
13/05/2004
Oi,
Estou passando pelo mesmo problema que você. Só que pra mim já basta eu conseguir ter o registro. Já tentei usar o TRegistry mas não consegui. O que eu quero é só a função que retorna o valor do registro. Você saber como faz isso ? (estou usando Delphi 6.0 e Windows 2000).
Obrigado.
Estou passando pelo mesmo problema que você. Só que pra mim já basta eu conseguir ter o registro. Já tentei usar o TRegistry mas não consegui. O que eu quero é só a função que retorna o valor do registro. Você saber como faz isso ? (estou usando Delphi 6.0 e Windows 2000).
Obrigado.
GOSTEI 0