Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2011, 04:10   #1
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию значение реестра в файл

Здравствуйте, пишу курсач. Надо считать из реестра информацию об аппаратном и программном обеспечении (что-то одно по каждому произвольно), а также к настройкам, относящимся к компьютеру в целом и к отдельному пользователю. Я тут потихоньку делаю, но чтобы знать что программа выполняет задачу, надо же посмотреть результат... т.е. ТЗ только считать из реестра, а я хочу еще сохранить в файл и посмотреть. Почему файл пустой?
Код:
HANDLE hFile=INVALID_HANDLE_VALUE;
	DWORD dwCount;
	HKEY hKey = HKEY_LOCAL_MACHINE, hKeyResult = NULL;
	hFile = CreateFile("reg.txt", GENERIC_READ | GENERIC_WRITE,
	0, NULL, CREATE_ALWAYS, 0, NULL);
	LPCVOID lPbufer;
	LONG rc=RegOpenKeyEx(hKey, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
		0, KEY_QUERY_VALUE | KEY_READ, &hKeyResult);
	lPbufer = hKeyResult;
	WriteFile(hFile, lPbufer, sizeof(lPbufer), &dwCount, NULL);
	CloseHandle(hFile);
	RegCloseKey(hKey);
	RegCloseKey(hKeyResult);
Alkagolik вне форума Ответить с цитированием
Старый 23.08.2011, 09:50   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Почему файл пустой?
А что ты ожидал в нем увидеть ?
mss вне форума Ответить с цитированием
Старый 23.08.2011, 13:53   #3
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
А что ты ожидал в нем увидеть ?
вопросом на вопрос? Хоть бы ответил что неправильно написано. Нет, ты конечно не обязан, но если уже барабанишь на клаве, так с какой-то целью... верно? Ситуация а-ля
-люди, дайте воды.
-а, зачем тебе вода?
С предметами конечно аналогию не проведешь, но ситуации в целом схожи. Хоть ответ и так очевиден, все же я бы хотел в нем видеть значения регистра по ключу из кода.
Alkagolik вне форума Ответить с цитированием
Старый 23.08.2011, 14:19   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
я бы хотел в нем видеть значения регистра по ключу из кода
Для чтения значений предназначена совсем иная функция - RegQueryValue[Ex]

Такой ответ про "неправильность написанного" устроит ?

Цитата:
барабанишь на клаве, так с какой-то целью
С целью, к примеру, подтолкнуть тебя в ходе диалога к самостоятельному нахождению верного решения. И диалог не отрицает формы "вопросом на вопрос".

Последний раз редактировалось Stilet; 23.08.2011 в 14:38.
mss вне форума Ответить с цитированием
Старый 23.08.2011, 14:24   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если вы хотите увидеть значение, то какого черта вы сохраняете хендл(указатель грубо говоря)?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.08.2011, 15:19   #6
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию

mss спасибо за подсказку, я догадывался что все именно так, но искал что-то вроде RegRead... будем есть посмотреть.
Пепел Феникса много чести черту отдаете, поминая сущность поганую. что-то не понимаю? пример создания и записи в файл взят из учебника Финогенова "щсновы программирования win32" с 308.
Alkagolik вне форума Ответить с цитированием
Старый 23.08.2011, 15:29   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я не про саму запись, а про то что вы пишите хендл открытого ключа, а не значение.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.08.2011, 15:51   #8
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
я не про саму запись, а про то что вы пишите хендл открытого ключа, а не значение.
Ничего не понятно. что пишу? куда пишу? как должно быть? почему?
Alkagolik вне форума Ответить с цитированием
Старый 23.08.2011, 15:55   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
	LONG rc=RegOpenKeyEx(hKey, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
		0, KEY_QUERY_VALUE | KEY_READ, &hKeyResult);
	lPbufer = hKeyResult;
	WriteFile(hFile, lPbufer, sizeof(lPbufer), &dwCount, NULL);
итог, вы записываете хендл открытого ключа, а не значение.
как прочитать значение вам указали.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.08.2011, 16:45   #10
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию

Пепел Феникса, спасибо большое. Ну считать и прочесть получилось. Результат не впечатляет (результат, записанный в файл). получилась строка длиной 256 символа 'M', видимо от Microsoft. Надо отформатировать вывод? как? проект win32
Код:
HANDLE hFile=INVALID_HANDLE_VALUE;
	DWORD dwCount, Type, Size = 256;
	TCHAR sVal[256];
	HKEY hKey = HKEY_LOCAL_MACHINE, hKeyResult = NULL;
	hFile = CreateFile("reg.txt", GENERIC_READ | GENERIC_WRITE,
	0, NULL, CREATE_ALWAYS, 0, NULL);
	LPCVOID lPbufer;
	RegOpenKeyEx(hKey, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
		NULL, KEY_QUERY_VALUE | KEY_READ, &hKeyResult);
	RegQueryValueEx(hKey,"", NULL,&Type,(LPBYTE)sVal,&Size);
	WriteFile(hFile, /*lPbufer, sizeof(lPbufer),*/ sVal, sizeof(sVal),&dwCount, NULL);
	CloseHandle(hFile);
	RegCloseKey(hKey);
	RegCloseKey(hKeyResult);

Последний раз редактировалось Alkagolik; 23.08.2011 в 16:51.
Alkagolik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти и открыть файл... взять значение из файла и вывести klukva200808 Microsoft Office Excel 2 23.05.2011 02:36
Взять значение ячейки не открывая файл и kzld Microsoft Office Excel 17 25.01.2011 07:01
значение из реестра Smagulov85 Общие вопросы Delphi 6 29.03.2010 01:48
Как считать значение из реестра? (делфи) zotox Помощь студентам 7 26.09.2008 12:38
Cохранить в файл значение заданного имени, тип REG_BINARY. Работа с реестром Windows. DelphiFun Общие вопросы Delphi 9 01.08.2007 21:36