1177
社区成员
uses
Registry;
type
TMultiString = array of string;
TMultiRegistry = class(TRegistry)
public
function ReadMultiString(const name: string): TMultiString;
end;
function TMultiRegistry.ReadMultiString(const name: string): TMultiString;
var
RegData: TRegDataType;
Info: TRegDataInfo;
buffer: pchar;
ptr: pchar;
i: Integer;
begin
if GetDataInfo(Name, Info) then
begin
GetMem(buffer, info.DataSize);
ReadBinaryData(name, buffer^, info.DataSize);
ptr := buffer;
i := 0;
while (ptr^ <> #0) do
begin
SetLength(Result, i + 1);
Result[i] := ptr;
Inc(i);
inc(ptr, StrLen(ptr) + 1);
end;
FreeMem(buffer);
end;
end;
继承TRegistry,增加函数ReadMultiString
调用如下
var
reg: TMultiRegistry;
v: TMultiString;
i: Integer;
begin
reg := TMultiRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
if not reg.OpenKey('SYSTEM\CurrentControlSet\services\Tcpip\Parameters', False) then
Exit;
v := reg.ReadMultiString('DhcpNameServer');
finally
reg.Free;
end;
for i := 0 to Length(v) - 1 do
begin
ShowMessage(v[i]);
end;
//HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ALG
end;