Alterar chave no regedit

16/01/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


Lucianoiron

Respostas

17/01/2006

Aspirante

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:

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.



Responder Citar