PDA

Ver la Versión Completa : Leer un REG_MULTI_SZ en el registro


seoane
08-06-2006, 15:49:59
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:

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;