如下所示是一个.REG文件中的内容,在DELPHI程序中怎么样才能把它写到注册表中呢?要是能写成函数就更好了,把  '[HKEY_CLASSES_ROOT\.386];"bin"=hex:ff,ad,27,98,5a,bf,fa,67,2b,fa,db,a7,89,2a,bb,fb,ab,f7,82,fb,ab,f7,85,\
  38,7b,ff,bf,87,45,a9,84,36,ba,bf,af,89,74,af,af,a7,82,ff,a8,aa,89,af,af,89,\
  24,af,a8,5f,af,89,af' 作为一个STRING类型的参数。
REGEDIT4[HKEY_CLASSES_ROOT\.386]
"bin"=hex:ff,ad,27,98,5a,bf,fa,67,2b,fa,db,a7,89,2a,bb,fb,ab,f7,82,fb,ab,f7,85,\
  38,7b,ff,bf,87,45,a9,84,36,ba,bf,af,89,74,af,af,a7,82,ff,a8,aa,89,af,af,89,\
  24,af,a8,5f,af,89,af

解决方案 »

  1.   

    winexec('regedit /s test.reg');
      

  2.   

    sysu(死树) 老兄的主意的确不错,可是我要求在不调用REGEDIT.EXE的情况下实现啊。
      

  3.   

    在Uses单元:包函Registry
    var
      MyReg:TRegistry;
    begin
      MyReg:=TRegistry.Create;
      MyReg.RootKey:='HKEY_LOCAL_MACHINE';
      if TheReg.OpenKey('关键字',True) then
      begin
       TheReg.WriteString('KKKKKK','KKKK');
        TheReg.CloseKey;
      end;
      TheReg.Free;
    如果是二进制的,用下面函数
    procedure WriteBinaryData(const Name: String; var Buffer; BufSize: Integer);
    具体可参考帮助
      

  4.   

    怎么被我遇上了
    var
      registerTemp : TRegistry;
      bData : array[ 0..0 ] of byte; begin
      registerTemp := TRegistry.Create;
      registerTemp.RootKey := HKEY_LOCAL_MACHINE;
      if registerTemp.OpenKey('SOFTWARE\ACD Systems\ACDSee',True) then
      begin
        registerTemp.WriteString('abc', '1234567' );
        bData[0] := 0;
        bData[1] := 1;
        bData[2] := 1;
        bData[3] := 1;
        MyReg.CreateKey('Passwd');   //建一个夹子
        registerTemp.WriteBinaryData( 'Exclusive', bData, 4 ); //在注册表中表现为00 01 01 01 这就是二进制数据
        registerTemp.WriteCurrency('ab_boolean',$1);    registerTemp.WriteInteger('ab_ex',$123);      registerTemp.WriteExpandString('abcde','123');   end;
      registerTemp.CloseKey ;
      registerTemp.Free;
    end;
      

  5.   

    1.
    获取注册表中二进制的键值
    uses Registry; procedure TForm1.Button1Click(Sender: TObject); 
    var 
      reg : TRegistry; 
      ts : TStrings; 
      i : integer; 
    begin 
      reg := TRegistry.Create; 
      reg.RootKey := HKEY_CURRENT_USER; 
      reg.LazyWrite := false; 
      reg.OpenKey( 'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', false); 
      ts := TStringList.Create; 
      reg.GetvalueNames(ts); 
      for i := 0 to ts.Count -1 do 
        begin 
          Memo1.Lines.Add(ts.Strings[i] + ' = ' + reg.ReadString(ts.Strings[i])); 
        end; 
      ts.Free; 
      reg.CloseKey; 
      reg.free; 
    end;
    2.
    var
    reg:tregistry;
    len:integer;
    p:PByte;
    DataInfo:TRegDataInfo;
    begin
      reg:=tregistry.Create;
      reg.RootKey:=hkey_local_machine;
      reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\MS-DOS Emulation',False);
      try
        Reg.GetDataInfo('DisplayParams',DataInfo);
        getmem(p,DataInfo.DataSize);
        reg.ReadBinaryData('DisplayParams',p^,DataInfo.DataSize);
      finally
        freemem(p);
        reg.CloseKey;
        reg.Free;
      end;
    end;
      

  6.   

    在DELPHI程序中,怎么样把一个长度不确定的二进制键值写到注册表中?
      

  7.   

    sorry,我上面应该是array[0..3] of
    长度不错定就用指针啊,或动态数组,链表什么的都行