如何将二进制数据写入注册表?

时间:2012-10-10 02:58:15

标签: delphi binary registry

在Win7中,RegEdit编辑或查看二进制文件,如1A 2B 3C 4D 现在我得到一个字符串

str := '1A,2B,3C,4D';

如何将str写入Registry,并在Win7 RegEdit中显示1A 2B 3C 4D

2 个答案:

答案 0 :(得分:3)

var
  Data: array of Byte; // or whatever binary container you want to use
  Reg: TRegistry;
begin
  ...
  SetLength(Data, 4);
  Data[0] := $1A;
  Data[1] := $2B;
  Data[2] := $3C;
  Data[3] := $4D; 

  Reg := TRegistry.Create(KEY_SET_VALUE);
  try
    Reg.RootKey := ...;
    if Reg.OpenKey('...', True) then
    begin
      Reg.WriteBinaryData('Value', Data[0], 4);
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
  ...
end;

答案 1 :(得分:0)

您可以使用TRegistry.WriteBinaryData。如果您想编写二进制$1A,$2B,$3C,$4D而不是字符串数据'1A,2B,3C,4D',请尝试将其更改为#$1A#$2B#$3C#$4D

str := #$1A#$2B#$3C#$4D;

并使用WriteBinaryData编写注册表:

Reg.WriteBinaryData('KeyName', str, Length(str) * SizeOf(Byte));