![]() |
Узнать существует ли запись в реестре
Проблема моя сотоит в том что вот этот код не работает
Код:
#include <windows.h> |
LONG RegQueryValueEx(
HKEY hKey, // handle of key to query LPTSTR lpValueName, // address of name of value to query LPDWORD lpReserved, // reserved LPDWORD lpType, // address of buffer for value type LPBYTE lpData, // address of data buffer LPDWORD lpcbData // address of data buffer size ); у тебя LPDWORD lpType нулю равен |
а ты проверь прежде указатель на ключ получен или нет
замени Key_execute на Key_all_access |
и указывай Reg_sz как тип данных если читается строка
|
В Msdn примеры были вроде же. И там есть описание каждого параметра
|
Переписал вот так
Код:
#include <windows.h> |
Код:
RegQueryValueEx(hKey,"mt",NULL,(LPDWORD)ktp,(LPBYTE)szProductType,&dwBufLen) |
У меня работает
Код:
HKEY Key; |
Цитата:
DWORD dwValueType = REG_SZ; RegQueryValueExA( ... &dwValueType... ) |
char ktp[]="REG_SZ";
я, б*я, говорил что надо указать константу REG_SZ а не указатель на строку "REG_SZ" эх вы молодежь, все это от нечитания msdn. |
Мистика какая то в одном случае работает http://img181.imageshack.us/img181/9531/tk2qb5.jpg .В другом случае неработает хоть запись с нужным именем в разделе реестра присутствует http://img181.imageshack.us/img181/4186/tk1sz5.jpg
|
Никакой мистики
Сравни мой пример и свой 132!=32 |
Цитата:
PS:у меня возник ещё один вопрос как прочитать значение отличающиеся от REG_SZ к примеру REG_DWORD.Какими для этого должны быть pData, lpcbData.Если я делаю так (LPBYTE)&szProductType когда szProductType типа DWORD то получаю ошибку о том что нельзя преобразовать unsigned long в unsigned long* .Может кто нибудь привести заведомо рабочий пример отличный от того что на мсдн? |
| Время: 06:24 |