首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

注册表怎样写下二进制数据

2012-10-19 
注册表怎样写入二进制数据?1,在Win7自带的注册表编辑器中,编辑一个二进制键值,其形式是类似这样的 : 1A 2B

注册表怎样写入二进制数据?
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了:

Delphi(Pascal) code
  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;

Delphi(Pascal) code
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; 

热点排行