Функция RegQueryValueEx возвращает тип и данние указанного значения по имени, ассоциирующимся с открытым ключом реестра.
LONG RegQueryValueEx(
HKEY hKey, // дескриптор ключа
LPTSTR lpValueName, // адерс имени значения
LPDWORD lpReserved, // зарезервировано
LPDWORD lpType, // адрес переменной для типа значения
LPBYTE lpData, // адрес буфера для данных
LPDWORD lpcbData // адрес переменной для размер буфера данных
);
Параметры:
hKey |
Идентифицирует открытый в текущий момент ключ или один из следующих предопределенных значений дескрипторов:
HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG |
lpValueName |
Адрес нульзаканчивающейся строки, содержащей имя требуемого значения. |
lpReserved |
Зарезервировано; должно быть NULL |
lpType |
Адрес переменной, в которую возвращается тип значения ключа. Возвращенное в этом параметре значение может принимать одно из следующих значений:
Значение: |
Назначение: |
KEY_ALL_ACCESS   |
Комбинация из KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, и KEY_SET_VALUE. |
KEY_CREATE_LINK   |
Права создавать символические ссылки. |
KEY_CREATE_SUB_KEY   |
Права создавать подключи. |
KEY_ENUMERATE_SUB_KEYS   |
Права перечислять подключи. |
KEY_EXECUTE   |
Права на доступ ко чтению. |
KEY_NOTIFY   |
Права на изменение нотификации. |
KEY_QUERY_VALUE   |
Права запрашивать данные подключей. |
KEY_READ   |
Комбинация из KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, и KEY_NOTIFY. |
KEY_SET_VALUE   |
Права устанавливать данные подключей. |
KEY_WRITE   |
Комбинация из KEY_SET_VALUE и KEY_CREATE_SUB_KEY. |
Параметр lpType может быть NULL, если тип не требуется.
|
lpData |
Адрес буфера, в который помещается данные значения. Это параметр может быть NULL, если данные не требуются. |
lpcbData |
Адрес переменной, указывающей размер в байтах буфера, на который ссылается параметр lpData. Когда функция возвращается, эта переменная содержит размер данных, скопированных в lpData.
Если буфер, указанный в параметре lpData, слишком мал для данных, то функция возвращает ERROR_MORE_DATA, и помещает нужный размер в переменную, на которую ссылается lpcbData.
Если lpData равен NULL, и lpcbData не равен NULL, функция возвращает ERROR_SUCCESS, и помещает размер данных, в байтах, в переменную, на которую указывает lpcbData. Это позволяет приложению выбрать лучший способ выделения памяти для данных значения ключа.
Если данные имеют тип REG_SZ, REG_MULTI_SZ или REG_EXPAND_SZ, тогда lpData содржит размер с учетом нулевого завершающего символа.
Параметр lpcbData может быть NULL, если только lpData равен NULL. |
Возвращаемые значения:
Если функция успешно, возвращается значение ERROR_SUCCESS.
При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
Замечания:
Ключ, указанный в hKey, должен быть открытым с правом доступа KEY_QUERY_VALUE. Для открытия ключа, используйте функцию RegCreateKeyEx или RegOpenKeyEx.
Эта функция не преобразует имена переменных окружения в данных значения, когда тип значений REG_EXPAND_SZ. Для этого может использоваться функция ExpandEnvironmentStrings.
Если данные значения имеют тип REG_SZ, REG_MULTI_SZ или REG_EXPAND_SZ, и используется ANSI версия этой функции (если произведен точный вызов RegQueryValue или не был объявлен Unicode перед добавлением заголовочного файла WINDOWS.H), эта функция преобразует записанную строку Unicode в строку ANSI перед копированием в буфер, указанный в параметре lpData.
Если функция RegQueryValueEx вызывается с hKey, установленным в дескриптор HKEY_PERFORMANCE_DATA, и со строкой значения указанного объекта, то возвращаемая структура данных иногода имеет незапрошенные значения. Не удивляйтесь, - это нормально.
Смотрите также:
ExpandEnvironmentStrings, RegCreateKeyEx, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegOpenKeyEx, RegQueryInfoKey, RegQueryValue
|