• Jon © (03.12.07 04:26) [0]
    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.
  • Дмитрий К © (03.12.07 05:25) [1]
    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.

  • Jon © (03.12.07 05:43) [2]
    Thank you very much.
  • Jon © (03.12.07 13:16) [3]
    Does there exist a method within KOL to write REG_MULTI_SZ?
    Using RegKeySetBinary results in key type of REG_BINARY.
  • Дмитрий К © (03.12.07 14:06) [4]
    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;

  • Jon © (03.12.07 16:38) [5]
    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 ;-)
Есть новые Нет новых   [134431   +10][b:0][p:0.001]