注册表怎样写入二进制数据?
1,在Win7自带的注册表编辑器中,编辑一个二进制键值,其形式是类似这样的 : 1A 2B 3F 4D ....
2,因为 1A 2B 3F 4D 这样的数据是个16进制,现在现在的问题就是:我得到 字符串 str := '1A2B3F4D ,怎样转换过后,写入类型为二进制的注册表后,在自带注册表编辑器中还是显示 1A 2B 3F 4D
[解决办法]
不要去拿那注册表的类来搞了,那太复杂,可能有人会说我在4楼回复仅是添加,不能干其他事,那么,就请看看reg的参数吧,除了add外,还有许多参数,只要用得得法,语句就可以简单多了,例如,上述的Test已经存在,仅想编辑下,那么,结合着ADD、DELETE就ok了:
winexec('cmd /c REG DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Borland /v Test /f',0); winexec('cmd /c REG Add HKEY_LOCAL_MACHINE\SOFTWARE\Borland /v Test /t REG_BINARY /d 1A2B3F4D',0);
[解决办法]
肯定用注册表类了,简单的很,只是你这个多了个字符串转换过程,给你写一个,在HKEY_CURRENT_USER\Software下写入test键值。
你也可以改造一下写成function
uses Registry;
procedure TForm1.Button1Click(Sender: TObject);var varStr, bVar: AnsiString; varLen, i: Integer;begin varStr := '1A2B3F4D'; varLen := Length(varStr); i := 1; while i < varLen do begin bVar := bVar + Char(StrToIntDef('$' + varStr[i] + varStr[i + 1], 0)); inc(i, 2); end; with TRegistry.Create do try RootKey := HKEY_CURRENT_USER; OpenKey('\Software', True); try WriteBinaryData('test', (@bVar[1])^, varLen div 2); except CloseKey; end; finally Free; end;end;