Array
(
)

Alterar chave no regedit

Lucianoiron
   - 16 jan 2006

Olá meus amigos tudo bem com vcs?espero que sim...
eu tenho uma dúvida qto ao uso do interbase em rede que é o seguinte...qdo uso o meu sistema numa estação a chave ´DataBasePath´ que fica no caminho

Hkey_local_Machine\System\CurrentControlSet\Services\Tcpip

deverá estar com o tipo ´Reg_Expand_Sz´ pois se estiver com o tipo ´REG_SZ ´ o sistema não vai abrir...se eu escluir esta chave e criar uma nova com o tipo ´Reg_Expand_Sz´ o sistema funciona normalmente...mas eu não gostaria de corer o risco de acontecer estes erros nos clientes e ter que pedir a eles para modificar manualmente esta chave....gostaria sim de alterar esta chave pelo meu sistema mesmo....alguém sabe com eu faço pra criar esta chave corretamente pelo delphi :?:
Desde já agradeço
Luciano


Aspirante
   - 17 jan 2006

cara, esse material é bem complexo, depende muito do que tu quer. mas tenho algumas pesquisas gravadas aqui (achei no próprio clubedelphi bem antiga). fica difícil saber o rumo que tu quer. mesmo assim, dá uma lida, é só ler e interpretar para seu tipo, aí sim fica fácil pra implementar no seu programa:


Citação:
Nesta matéria veremos como trabalhar com o registro do windows utilizando suas ´Api´s´. Esta matéria possui algumas técnicas que tratam o registro do windows. Veja as dicas desta matéria:

Como definir, que uma certa extensão de arquivo seja aberta pelo seu programa.

Como escrever e ler algum valor no registro do windows.

E o que escrever lá, para que sua aplicação seja inicializada junto com o windows.

Vejamos então a primeira dica:

Uses
Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses...

procedure TForm1.Button1Click(Sender: TObject);
Var
Reg : TRegistry;
Begin
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKEY_CLASSES_ROOT;
OpenKey(´\MeuPrograma´, True);
WriteString(´´, ´Arquivo do meu programa´); //Nome dado ao arquivo de sua aplicação. ´Ex: Imagem Gif´.
CloseKey;
OpenKey(´MeuPrograma\DefaultIcon´, True);
// O primeiro parâmetro da linha de comando abaixo, é para escrever uma string vazia.
// E o último parâmetro é para colocar o ícone da sua aplicação nos arquivos que serão abertos por ela.
WriteString(´´, Application.ExeName + ´,0´);
CloseKey;
OpenKey(´MeuPrograma\shell\open\command´, True);
WriteString(´´, Application.ExeName + ´ ´¬1´´);
CloseKey;
RootKey := HKEY_CLASSES_ROOT;
OpenKey(´\.ext´, True); // Substitua o ´ext´ pela extensão que você deseja utilizar.
WriteString(´´, ´MeuPrograma´);
CloseKey;
end;
finally
Reg.CloseKey;
Reg.Free;
end;
End;
Acredito que você tenha conseguido aplicar esta técnica que lhe pode ser bastante útil. Vamos então ver a segunda dica, com ela você aprenderá como ler ou escrever um valor no registro do windows:

Uses
Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses...

procedure button1.click(sender: Tobject);
var
Reg: Tregistry;
begin
Reg:=Tregistry.create;
with Reg do
begin
rootkey:=HKEY_LOCAL_MACHINE;
Openkey(´Software\Microsoft\Outlook Express\5.0\Default Settings\Recent Stationery List´,false);
writestring(´File0´, ´Natureza.htm´);
writestring(´File1´, ´Dia Claro.htm´);
closekey;
end;
end;
No caso acima nós exemplificamos o que é escrever no registro, Neste exemplo nós trocamos de ordem os papeis de carta do Microsoft Outlook Explorer, embora você possa alterar qualquer registro já existente no ´regedit´. Se o que você que é incluir um registro e não editar, como nós fizemos, basta que no primeiro parâmetro da linha de comando ´writestring´, você coloque um nome para o seu registro, que não exista nesta pasta.

Agora no código abaixo veremos como ler um valor de um registro qualquer:

Uses
Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses...

procedure button1.click(sender: Tobject);
var
Reg: Tregistry;
S: String;
begin
Reg:=Tregistry.create;
with Reg do
begin
rootkey:=HKEY_LOCAL_MACHINE;
OpenkeyReadOnly(´SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\´,false);
s:=readstring(´version´);
closekey;
end;
edit.text:=s;
end;
Neste caso nós pegamos o registro ´version´, que significa a versão do windows, colocamos o seu valor na variável ´s´ e depois à ´jogamos´ num ´edit´ qualquer, apenas para que possamos visualizá-la.

Agora que você já sabe como escrever no registro do windows, veremos o que precisamos escrever, para colocar a nossa aplicação para ser inicializada junto com o windows.

Uses
Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses...

procedure button1.click(sender: Tobject);
var
Reg: Tregistry;
begin
Reg:=Tregistry.create;
with Reg do
begin
rootkey:=HKEY_LOCAL_MACHINE;
Openkey(´\MICROSOFT\WINDOWS\CURRENTVERSION\RUN´,false);
writestring(´MeuPrograma´, pchar(application.exename));
closekey;
end;
end;
Com mais essa dica, finalizo a nossa matéria que ensina a trabalhar com o registro do windows. Espero que você tenha gostado e que lhe seja bastante útil.