我想通过获取某个游戏的文件路径来读它写的注册表值。已知注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\CS78\F1     已知键值:Loader (REG_SZ型)
怎么用纯API来实现啊?用Delphi自带的单元类,生成的太大了。

解决方案 »

  1.   

    纯API可以用regopenkey和regqueryvaluekey读取
    例如
    RegOpenKey(HKEY_LOCAL_MACHINE,‘Software/CS78\F1‘,reg1); 
    RegQueryValueEx(reg1,,,,,)//偷个懒不写完了,楼主可以自行参考msdn
      

  2.   

    不要偷个懒啊  我也是用RegQueryValueEx读,总是出错
    ---------------------------
    Error
    ---------------------------
    Runtime error 216 at 00402EF8
    ---------------------------
    确定   
    ---------------------------
    汗,好心人帮一下,我看看错在哪里写个完整的给我撒
      

  3.   

    function RegReadBinary(const RootKey: HKEY; const SubKey, ValueName: string; Data: PChar; out Len: integer): Boolean;
    var
    Key: HKEY;
    T: DWORD;
    begin
    Result := False;
    RegOpenKeyEx(RootKey, PChar(SubKey), 0, KEY_ALL_ACCESS, Key);
    if RegQueryValueEx(Key, PChar(ValueName), nil, @T, nil, @Len) = 0 then
    Result := true;
    RegCloseKey(Key);
    end;var
     s : string;
     i : integer;
    begin
      if RegReadBinary(HKEY_LOCAL_MACHINE,'SOFTWARE\SNDA\DN','Loader',@s,i) = true then
      MessageBox(0,PChar(s),'',0);
    end.
      

  4.   

    RegQueryValueEx第五个参数需要用到buffer吧?你定义一个数组array,然后用指针指向它试试,也是@buffer这种形式
      

  5.   

    {
    codeby sail2000
    test in delphi2010 only
    }
    var
      FAccess: Cardinal;
      Key: HKEY;
      dwType: DWORD;
      dwLen: DWORD;
      Buf: array of Char;
    begin
      if RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar('SOFTWARE\CS78\F1'), 0,
        KEY_ALL_ACCESS, Key) = 0 then
      begin
        if RegQueryValueEx(Key, 'Loader', nil, @dwType, nil, @dwLen)
          = ERROR_SUCCESS then
        begin
          if (dwType = REG_SZ) and (dwLen > 0) then
          begin
            SetLength(Buf, dwLen);
            RegQueryValueEx(Key, 'Loader', nil, @dwType, @Buf[0],
              @dwLen);
              MessageBox(0,PChar(Buf),'',0);
          end;
        end;
        RegCloseKey(Key);
      end;
    end;
      

  6.   

    多了个声明变量 FAccess: Cardinal; 无甚用,请去之