-
Can you please provide an example of how to read registry key of type REG_MULTI_SZ. I have tried RegKeyGetBinary but I do not know how to transfer value out of buffer. The data is transferred to a PChar, but then I get a Runtime Error.
-
program Project1;
uses
Windows, KOL;
var Key: HKey; S: string; Count: Cardinal;
begin
Key := RegKeyOpenRead(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control');
try
Count := RegKeyGetBinary(Key, 'PreshutdownOrder', S, 0);
SetLength(S, Count);
RegKeyGetBinary(Key, 'PreshutdownOrder', Pointer(S)^, Count);
while StrReplace(S, #0, #13#10) do;
MsgOK(S);
finally
RegKeyClose(Key);
end;
end.
-
Thank you very much.
-
Does there exist a method within KOL to write REG_MULTI_SZ? Using RegKeySetBinary results in key type of REG_BINARY.
-
AFAIK there does not. Try this: function RegKeySetStrMulti(Key: HKey; const ValueName: KOLString; const Value: KOLString): Boolean;
begin
Result := (Key <> 0) and (RegSetValueEx(Key, PKOLChar(ValueName), 0, REG_MULTI_SZ,
PKOLChar(Value), (Length(Value) + 1)*Sizeof(KOLChar)) = ERROR_SUCCESS);
end;
-
Thanks again. I did use RegSetValueEx, but I thought that I had missed in KOL.pas - maybe this will be included in the next version ;-)
|