怎样把注册表中二进制和双字节的值读出显示在ListView中?(100分) (100分)

K

k.k

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样把注册表中二进制和双字节的值读出显示在ListView中?谢谢.(100分)
 
TRegistry.ReadBinaryData()
 
谢谢,我是不知道怎样把结果显示在Listview中,小弟是菜鸟,能给段源码看看吗?谢谢!
 
注册表中应该没有双字节的概念?!
从根开始一个个读。
二进制数据只能用十六进制表示。
 
procedure TForm1.Button1Click(Sender: TObject);
const
CKeyName: string = 'SOFTWARE/Microsoft/Windows/CurrentVersion/Run';
CValName: string = 'www'; //www的值是 REG_BINARY 型
var
keyGood: boolean;
p: integer;
regKey: TRegistry;
list:tlistitem;
tmpStr: string;
vSize: integer;
begin
regKey := TRegistry.Create;
try
regKey.RootKey := HKEY_LOCAL_MACHINE;
keyGood := regKey.OpenKey(CKeyName, false);
if (keyGood) then
begin
vSize := regKey.GetDataSize(CValName);
if (vSize > 0) then
begin
SetLength(tmpStr, vSize);
regKey.ReadBinaryData(CValName, tmpstr[1], vSize);
repeat
p := Pos(#0, tmpStr);
if p <> 0 then
begin
Delete(tmpStr, p, 1);
Insert(#13#10, tmpStr, p);
end;
until
p = 0;
{StringReplace(tmpStr, #0, #13#10, [rfReplaceAll]);}
list:=Listview1.Items.Add;
Listview1.Items[0].Caption := tmpStr;
end;
end;
finally
regKey.Free;
end;
end;
 
10. 读写注册表的二进制值
uses .., registry;

procedure TForm1.Button2Click(Sender: TObject);
var
Reg: TRegistry;
b,b2:array[0..10] of char;
i,n:integer;
begin
Reg := TRegistry.Create;
b[0]:=#10; //10
b[1]:='1'; //49
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('/Software/Microsoft/Windows/CurrentVersion/RunOnce', True)
then
begin
Reg.WriteBinaryData('MyApp',b,2);
n:=Reg.ReadBinaryData('MyApp',b2,10);
showmessage(inttostr(n));
for i:=0 to n-1 do showmessage(inttostr(integer(b2)));
end;

finally
Reg.CloseKey;
Reg.Free;
inherited;
end;
end;
 
顶部