Собрать имена записей не проблема Code: char *buf=new char[1024*1024]; char *buff=new char[1024*10]; long retd; HKEY key;DWORD datind=0; char Name[MAX_PATH], Value[MAX_PATH];; DWORD NameSize,tip,ValueSize; if(RegOpenKeyEx(HKEY_CURRENT_USER,"Console",0,KEY_ALL_ACCESS,&key)==ERROR_SUCCESS) { for(;;) { NameSize=MAX_PATH; retd=RegEnumValue(key,datind++,&Name[0],&NameSize,NULL,&tip,(unsigned char*)&Value[0],&ValueSize); wsprintf(buff,"%s\n",Name); strcat(buf,buff); if(retd==ERROR_NO_MORE_ITEMS){break;} }} А вот со всем с остальным проблема Вот к если пытатся вывести значение ключа с 16ричным числом wsprintf(buff,"%х",Value); то значения получается абсолютно иные чем те что видны в регедите.
RegEnumValue... вот гугл покозал http://www.tenouk.com/ModuleP.html поидее в твоем случае надо *(DWORD*)Value
Что то у меня неочень получается определять тип записи Набрасал такую вот структуру Code: struct {UINT type;LPCSTR name;} RGTP [] = { { REG_BINARY, "REG_BINARY" }, { REG_DWORD, "REG_DWORD" }, { REG_DWORD_LITTLE_ENDIAN, "REG_DWORD_LITTLE_ENDIAN" }, { REG_DWORD_BIG_ENDIAN, "REG_DWORD_BIG_ENDIAN" }, { REG_EXPAND_SZ,"REG_EXPAND_SZ" }, { REG_LINK, "reserved for system" }, { REG_MULTI_SZ, "REG_MULTI_SZ" }, { REG_NONE, "No defined value type." }, { REG_QWORD, "REG_QWORD" }, { REG_QWORD_LITTLE_ENDIAN,"REG_QWORD_LITTLE_ENDIAN"}, { REG_SZ, "REG_SZ" }, { 0, NULL}, }; Юзаю так sprintf(buff,"%s",RGTP[tip].name) но получается полная фигня
фигня получается, потомучто фигня написанна, посмори константы REG_XXX... сделай массив указателей на строки в том порядке, в котором идут константы, тогда получится. чтото похожее на след код: Code: char *type_arr[]={"none","sz","szexpand","binary","dword","dword big"....}; sprintf(buf,"%s",type_arr[tip]);