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

注册表怎样写入二进制数据?解决方法

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


  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);

reg的参数:
QUERY
ADD
DELETE
COPY
SAVE
RESTORE
LOAD
UNLOAD
COMPARE

[解决办法]
肯定用注册表类了,简单的很,只是你这个多了个字符串转换过程,给你写一个,在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;


热点排行