已知注册表的某项,想得到该项下所有 数值名称 和 数值数据 逐条显示在memo里 应该怎样写?不引用Registry单元,只用RegOpenKey,RegQueryValueEx等api该怎样写呢? 我对注册表不了解, 一点头绪也没有,大侠帮忙!谢谢

解决方案 »

  1.   

    找到个函数....貌似是遍历的,哪位会用教教我吧
       function RegEnum(RootKey: HKEY; Name: String; var ResultList: String; const DoKeys: Boolean): boolean; 
       var 
        i: integer; 
        iRes: integer; 
        s: String; 
        hTemp: HKEY; 
        Buf: Pointer; 
        BufSize: Cardinal; 
       begin 
        Result := False; 
        ResultList := ''; 
        if RegOpenKeyEx(RootKey, PChar(Name), 0, KEY_READ, hTemp) = ERROR_SUCCESS then 
        begin 
        Result := True; 
        BufSize := 1024; 
        GetMem(buf, BufSize); 
        i := 0; 
        iRes := ERROR_SUCCESS; 
        while iRes = ERROR_SUCCESS do 
        begin 
        BufSize := 1024; 
        if DoKeys then 
        iRes := RegEnumKeyEx(hTemp, i, buf, BufSize, nil, nil, nil, nil) 
        else 
        iRes := RegEnumValue(hTemp, i, buf, BufSize, nil, nil, nil, nil); 
        if iRes = ERROR_SUCCESS then 
        begin 
        SetLength(s, BufSize); 
        Move(buf^, s[1], BufSize); 
        if ResultList = '' then 
        ResultList := s 
        else 
        ResultList := Concat(ResultList, #13#10, s); 
        inc(i); 
        end; 
        end; 
        FreeMem(buf); 
        RegCloseKey(hTemp); 
        end; 
       end;