Fórum Como criar pastas especificas no regedit usando o Delphi? #584711

10/08/2017

0

Pessoal gostaria de uma ajuda de vocês como faço para abrir uma determinada pasta no Regedit
tipo eu quero abrir a pasta MuiCache que esta localizada em HKEY_CURRENT_USER\\Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\MuiCache


eu sei usando aquivo VBS codigo abaixo porem que usar o Delphi em um button.

Sub Main()
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Lastkey","HKEY_CURRENT_USER\\Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\MuiCache","REG_SZ"
WshShell.Run "regedit", 1,True
Set WshShell = Nothing
End Sub

On Error Resume Next
Main
If Err.Number Then
WScript.Quit 4711
End If
Fabricio Martins

Fabricio Martins

Responder

Post mais votado

11/08/2017

Você precisa usar a unit Registry para isso.

Para melhor entendimento, vou postar uma função para saber se um programa está instalado, abrindo e consulta chaves no registro.

Adicione Registry, Shellapi na uses do form.

function ProgramaInstalado(Programa: string): String; 
Var 
  List: TStringList; 
  Registry: TRegistry; 
  i: Integer; 
  DisplayName: String; 
begin 
  Registry := TRegistry.Create; 
  List := TStringList.Create; 
  try 
    with Registry do 
    begin 
      RootKey := HKEY_LOCAL_MACHINE; 

      if OpenKey('Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall', False) Then 
      Begin 
        GetKeyNames(List); 
        CloseKey; 
      End; 

      for i := 0 to List.Count - 1 do 
      begin 
        RootKey := HKEY_LOCAL_MACHINE; 
        OpenKey('Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\' + List[i], False); 
        DisplayName := ReadString('DisplayName'); 
        CloseKey; 

        if pos(AnsiUpperCase(Programa), AnsiUpperCase(DisplayName)) > 0 then 
        begin 
          Result := DisplayName; 
          exit; 
        end; 
      End; 
    end; 
  Finally 
    Registry.Free; 
    List.Free; 
  end; 
end;


Modo de uso:

if ProgramaInstalado(Edit1.Text) <> EmptyStr then 
    ShowMessage('Programa instalado: ' + sLineBreak + ProgramaInstalado(Edit1.Text)) 
  else 
    ShowMessage('Programa não instalado');

Natanael Ferreira

Natanael Ferreira
Responder

Gostei + 1

Mais Posts

10/08/2017

Fabricio Martins

pessoal desculpa o erro não é Criar é ABRIR
Como Abrir pastas especificas no regedit usando o Delphi?
obrigado..
Responder

Gostei + 0

12/08/2017

Fabricio Martins

obrigado pela ajuda
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar