HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Как прочитать все записи в ключе реестра?RegEnumValue
  #1  
Старый 04.10.2008, 21:38
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
С нами: 10535289

Репутация: 107


По умолчанию Как прочитать все записи в ключе реестра?RegEnumValue

Собрать имена записей не проблема
Код:
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); то значения получается абсолютно иные чем те что видны в регедите.
 
Ответить с цитированием

  #2  
Старый 04.10.2008, 21:50
FrMn
Познающий
Регистрация: 08.08.2008
Сообщений: 55
С нами: 9346084

Репутация: 54
По умолчанию

RegEnumValue...
вот гугл покозал http://www.tenouk.com/ModuleP.html
Цитата:
Вот к если пытатся вывести значение ключа с 16ричным числом wsprintf(buff,"%х",Value);
поидее в твоем случае надо *(DWORD*)Value

Последний раз редактировалось FrMn; 04.10.2008 в 21:57..
 
Ответить с цитированием

  #3  
Старый 05.10.2008, 14:14
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
С нами: 10535289

Репутация: 107


По умолчанию

Цитата:
Сообщение от FrMn  
RegEnumValue...
вот гугл покозал http://www.tenouk.com/ModuleP.html

поидее в твоем случае надо *(DWORD*)Value
Я правильно понял что это преобразование надо для вывода значения записей типа REG_DWORD ?
 
Ответить с цитированием

  #4  
Старый 05.10.2008, 15:42
FrMn
Познающий
Регистрация: 08.08.2008
Сообщений: 55
С нами: 9346084

Репутация: 54
По умолчанию

да
 
Ответить с цитированием

  #5  
Старый 05.10.2008, 19:44
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
С нами: 10535289

Репутация: 107


По умолчанию

Цитата:
Сообщение от FrMn  
да
Что то у меня неочень получается определять тип записи
Набрасал такую вот структуру
Код:
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) но получается полная фигня
 
Ответить с цитированием

  #6  
Старый 05.10.2008, 19:54
FrMn
Познающий
Регистрация: 08.08.2008
Сообщений: 55
С нами: 9346084

Репутация: 54
По умолчанию

фигня получается, потомучто фигня написанна, посмори константы REG_XXX...
сделай массив указателей на строки в том порядке, в котором идут константы, тогда получится. чтото похожее на след код:
Код:
char *type_arr[]={"none","sz","szexpand","binary","dword","dword big"....};
sprintf(buf,"%s",type_arr[tip]);
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Юмор. Анекдоты, смешные рассказы/логи. Mobile Болталка 1356 16.06.2010 16:46
Отношения с девушками SuNDowN Болталка 125 11.11.2008 22:52
Архив статей по раскрутке сайта SQL SЕО - тонкости, методы раскрутки 1 21.08.2008 16:30
Как стать хакером! foreva Болталка 19 12.12.2007 00:12



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.