>>不要使用DELPHI封装的TRegist
>>ry类,而是使用Windows API中操作注册表的API来完成.
why??
delphi中File->Open,找到delphi的安装目录,打开这个文件 source/vcl/Registry.pas,然后找到delphi替你写好的打开注册表健,和读取的方法。(delphi是使用Windows API中操作注册表的API来完成)
然后使用,ctrl+c,ctrl+v(或者你自己喜欢的方式)将代码拷贝到你的程序中,然后做一些修改适应你的程序。ok搞掂.

解决方案 »

  1.   

    对NetAnts测试通过,如果你运行失败,请检查键名是否正确。(Uses ShellApi)
    procedure TForm1.Button1Click(Sender: TObject);
    var Ret,Key:HKey;
        DataType,DataLen:integer;
        Buffer:string;
    begin
      Ret:=RegOpenKey(HKEY_LOCAL_MACHINE,'Software\Aerofox\FoxMail',Key);
      if Ret=0 then
        Ret:=RegQueryValueEx(Key,PChar('Executable'),nil,@DataType,nil,@DataLen)
      else
        ShowMessage('Error!');  case DataType of
        REG_SZ,REG_EXPAND_SZ,REG_MULTI_SZ:
          begin
            SetString(Buffer,nil,DataLen);
            RegQueryValueEx(Key,PChar('Executable'),nil,@DataType,PByte(PChar(Buffer)),@DataLen);
            Edit1.Text:=Buffer;{显示键值}
          end;
      end;
    end;
      

  2.   

    用Shell Lightweight Utilities API可以非常简单的完成这个工作。
    如果你没有shlwapi的声明单元,则简单的声明如下函数入口:
    function SHGetValue(
      hKey: HKEY;
      subKeyName, valueName: PChar;
      valueType: PDWORD;
      dataBuf: Pointer;
      bufSize: PDWORD
      ):DWORD; stdcall; external 'shlwapi.dll' name 'SHGetValueA';
    随后只需要调用该函数就可以得到你所需要的路径值: 
    function GetAppPath: string;
    const
      REGROOT: HKEY = HKEY_LOCAL_MACHINE;
      REGKEYNAME = 'Software\Aerofox\FoxMail';
      REGVALUENAME = 'Executable';
    var
      valueType: DWORD;
      cbSize: DWORD;
    begin
      valueType:=REG_SZ;
      SetLength(Result,MAX_PATH);
      cbSize:=Length(Result);
      if SHGetValueA(
        REGROOT, REGKEYNAME, REGVALUENAME, 
        @valueType, PChar(Result), @cbSize) = ERROR_SUCCESS then
      begin
        SetLength(Result,Length(PChar(Result)));
      end else
      begin
        SetLength(Result,0);
        raise Exception.Create('Path not found in registry.');
      end;
    end;
    需要注意的是,如果你需要频繁的或者大量的访问注册表中的多个键值,最好用advapi中的相关函数,当然用Delphi自己的TRegistry类就更是简单高效了。