Ver Mensaje Individual
  #7  
Antiguo 01-11-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Sobre la función que ya tienes basada en API y no en TRegistry, vamos a enumerar las subclaves posibles y borrarlas todas en una función recursiva:

Código Delphi [-]
function DeleteRegistryKey(const RootKey: HKEY; const Key: String): Boolean;
var
  Handle : HKEY;
  Subkey: array[0..255] of CHAR;
  PathKey: String;
  Index: integer;
begin
  Result := False;
  if RegOpenKeyEx(RootKey, PChar(Key), 0, KEY_ALL_ACCESS or KEY_WOW64_64KEY, Handle) = ERROR_SUCCESS then
  begin
    Index:= 0;
    while ERROR_SUCCESS = RegEnumKey(Handle, Index, @Subkey[0], sizeof(Subkey)-1) do
    begin
      PathKey:= Key + '\' + String(Subkey);
      DeleteRegistryKey(RootKey, PathKey);
      inc(Index);
    end;
    RegCloseKey(Handle);
    if RegOpenKeyEx(RootKey, PChar(ExtractFilePath(Key)), 0, KEY_ALL_ACCESS or KEY_WOW64_64KEY, Handle) = ERROR_SUCCESS then
    begin
      Result := RegDeleteKey(Handle, PCHAR(ExtractFileName(Key))) = ERROR_SUCCESS;
      RegCloseKey(Handle);
    end;
  end else
    Result := False;
end;


Saludos.

Última edición por escafandra fecha: 01-11-2015 a las 20:38:24.
Responder Con Cita