Ver Mensaje Individual
  #1  
Antiguo 08-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Leer un REG_MULTI_SZ en el registro

Código Delphi [-]
uses Registry;


function ReadMultiString(Root: HKey; Key, Value: String; Strings: TStringList): Boolean;
var
  Buffer: PChar;
  Size: Integer;
  i: integer;
begin
  Result := FALSE;
  with TRegistry.Create do
  try
    Access := KEY_READ;
    RootKey := Root;
    if OpenKey(Key, FALSE) then
    begin
      if ValueExists(Value) then
      begin
        Size := GetDataSize(Value);
        if Size > 0 then
        try
          GetMem(Buffer, Size);
          try
            Fillchar(Buffer^, Size, #0);
            ReadBinaryData(Value, Buffer^, Size);
            for i := 0 to Size - 2 do
              if Buffer[ i ] = #0 then Buffer[ i ] := #13;
            Strings.Text:= String(Buffer);
            Result:= TRUE;
          finally
            FreeMem(Buffer);
          end;
        except
        end;
      end;
      CloseKey;
    end;
  finally
    Free;
  end;
end;


Ejemplo de uso:
Código Delphi [-]
var
  Lista: TstringList;
  i: Integer;
begin
  Lista:= TStringList.Create;
  try
    if ReadMultiString(HKEY_LOCAL_MACHINE,
      '\SYSTEM\CurrentControlSet\Control\ContentIndex',
      'DLLsToRegister', Lista) then
      for i:= 0 to Lista.Count-1 do
        ShowMessage(Lista[ i ]);
  finally
    Lista.Free;
  end;
end;
Responder Con Cita