Функция RegGetValueA (winreg.h)

Извлекает тип и данные для указанного значения реестра.

Синтаксис

LSTATUS RegGetValueA(
  [in]                HKEY    hkey,
  [in, optional]      LPCSTR  lpSubKey,
  [in, optional]      LPCSTR  lpValue,
  [in, optional]      DWORD   dwFlags,
  [out, optional]     LPDWORD pdwType,
  [out, optional]     PVOID   pvData,
  [in, out, optional] LPDWORD pcbData
);

Параметры

[in] hkey

Дескриптор открытого раздела реестра. Ключ должен быть открыт с правом доступа KEY_QUERY_VALUE. Дополнительные сведения см. в разделе Безопасность раздела реестра и права доступа.

Этот дескриптор возвращается функцией RegCreateKeyEx, RegCreateKeyTransacted, RegOpenKeyEx или RegOpenKeyTransacted . Это также может быть один из следующих предопределенных ключей:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_PERFORMANCE_NLSTEXT
HKEY_PERFORMANCE_TEXT
HKEY_USERS

[in, optional] lpSubKey

Путь к разделу реестра относительно ключа, указанного параметром hkey . Значение реестра будет получено из этого подраздела.

Путь не учитывает регистр.

Если этот параметр имеет значение NULL или пустую строку "", значение будет считываться из ключа, указанного самим ключом hkey .

[in, optional] lpValue

Имя значения реестра.

Если этот параметр имеет значение NULL или пустую строку "", функция извлекает тип и данные для неименованного или значения по умолчанию ключа, если таковой имеется. Ключи не имеют автоматически неименованного значения или значения по умолчанию, а неименованные значения могут иметь любой тип.

Дополнительные сведения см. в разделе Ограничения размера элементов реестра.

[in, optional] dwFlags

Флаги, ограничивающие тип данных значения для запроса. Если тип данных значения не соответствует этим критериям, функция завершается ошибкой. Этот параметр может быть одним или несколькими из следующих значений.

Значение Значение
RRF_RT_ANY
0x0000ffff
Нет ограничений на тип.
RRF_RT_DWORD
0x00000018
Ограничение типа до 32-разрядных RRF_RT_REG_BINARY | RRF_RT_REG_DWORD.
RRF_RT_QWORD
0x00000048
Ограничьте тип 64-разрядными RRF_RT_REG_BINARY | RRF_RT_REG_QWORD.
RRF_RT_REG_BINARY
0x00000008
Ограничьте тип REG_BINARY.
RRF_RT_REG_DWORD
0x00000010
Ограничьте тип REG_DWORD.
RRF_RT_REG_EXPAND_SZ
0x00000004
Ограничьте тип REG_EXPAND_SZ.
RRF_RT_REG_MULTI_SZ
0x00000020
Ограничьте тип REG_MULTI_SZ.
RRF_RT_REG_NONE
0x00000001
Ограничьте тип REG_NONE.
RRF_RT_REG_QWORD
0x00000040
Ограничьте тип REG_QWORD.
RRF_RT_REG_SZ
0x00000002
Ограничьте тип REG_SZ.
 

Этот параметр также может включать одно или несколько из следующих значений.

Значение Значение
RRF_NOEXPAND
0x10000000
Не развертывайте строки среды автоматически, если значение имеет тип REG_EXPAND_SZ.
RRF_ZEROONFAILURE
0x20000000
Если параметр pvData не имеет значение NULL, при сбое присвойте содержимому буфера значения нулей.
RRF_SUBKEY_WOW6464KEY
0x00010000
Если lpSubKey не имеет значение NULL, откройте подраздел, который указывает lpSubKey с правами доступа KEY_WOW64_64KEY. Дополнительные сведения об этих правах доступа см. в разделе Безопасность раздела реестра и права доступа.

Вы не можете указать RRF_SUBKEY_WOW6464KEY в сочетании с RRF_SUBKEY_WOW6432KEY.

RRF_SUBKEY_WOW6432KEY
0x00020000
Если lpSubKey не имеет значение NULL, откройте подраздел, который указывает lpSubKey с правами доступа KEY_WOW64_32KEY. Дополнительные сведения об этих правах доступа см. в разделе Безопасность раздела реестра и права доступа.

Вы не можете указать RRF_SUBKEY_WOW6432KEY в сочетании с RRF_SUBKEY_WOW6464KEY.

[out, optional] pdwType

Указатель на переменную, получающую код, указывающий тип данных, хранящихся в указанном значении. Список возможных кодов типов см. в разделе Типы значений реестра. Этот параметр может иметь значение NULL , если тип не является обязательным.

[out, optional] pvData

Указатель на буфер, получающий данные значения. Этот параметр может иметь значение NULL , если данные не требуются.

Если данные являются строкой, функция проверяет наличие завершающего символа NULL . Если он не найден, строка сохраняется с признаком конца null , если буфер достаточно велик для размещения дополнительного символа. В противном случае функция завершается сбоем и возвращает ERROR_MORE_DATA.

[in, out, optional] pcbData

Указатель на переменную, указывающую размер буфера, на который указывает параметр pvData , в байтах. Когда функция возвращает, эта переменная содержит размер данных, скопированных в pvData.

Параметр pcbData может иметь значение NULL , только если pvData имеет значение NULL.

Если данные имеют тип REG_SZ, REG_MULTI_SZ или REG_EXPAND_SZ, этот размер включает все завершающие символы NULL или символы. Дополнительные сведения см. в подразделе "Примечания".

Если буфер, заданный параметром pvData , недостаточно велик для хранения данных, функция возвращает ERROR_MORE_DATA и сохраняет требуемый размер буфера в переменной, на которую указывает pcbData. В этом случае содержимое буфера pvData равно нулю, если dwFlags указывает RRF_ZEROONFAILURE и не определено в противном случае.

Если pvData имеет значение NULL, а pcbData — не NULL, функция возвращает ERROR_SUCCESS и сохраняет размер данных в байтах в переменной, на которую указывает pcbData. Это позволяет приложению определить оптимальный способ выделения буфера для данных значения.

Если hKey указывает HKEY_PERFORMANCE_DATA и буфер pvData недостаточно велик, чтобы содержать все возвращаемые данные, функция возвращает ERROR_MORE_DATA и значение, возвращаемое с помощью параметра pcbData , не определено. Это связано с тем, что размер данных о производительности может меняться от одного вызова к другому. В этом случае необходимо увеличить размер буфера и снова вызвать RegGetValue , передав обновленный размер буфера в параметре pcbData . Повторяйте это, пока функция не будет выполнена успешно. Для отслеживания размера буфера необходимо сохранить отдельную переменную, так как значение, возвращаемое pcbData , непредсказуемо.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение будет ERROR_SUCCESS.

Если функция завершается сбоем, возвращаемое значение представляет собой системный код ошибки.

Если буфер pvData слишком мал для получения значения, функция возвращает ERROR_MORE_DATA.

Если значение реестра lpValue не существует, функция возвращает ERROR_FILE_NOT_FOUND.

Если dwFlags задает сочетание RRF_SUBKEY_WOW6464KEY и RRF_SUBKEY_WOW6432KEY, функция возвращает ERROR_INVALID_PARAMETER.

Комментарии

Приложение обычно вызывает RegEnumValue для определения имен значений, а затем RegGetValue для получения данных для имен.

Если данные имеют тип REG_SZ, REG_MULTI_SZ или REG_EXPAND_SZ и используется версия ANSI этой функции (путем явного вызова RegGetValueA или путем не определения ЮНИКОДа перед включением файла Windows.h), эта функция преобразует сохраненную строку Юникода в строку ANSI, прежде чем копировать ее в буфер, на который указывает pvData.

При вызове этой функции с ключом hkey , для которого задан дескриптор HKEY_PERFORMANCE_DATA и строка значения указанного объекта, возвращаемая структура данных иногда содержит незапросенные объекты. Не удивляйтесь; Это нормальное поведение. Всегда следует ожидать обхода возвращаемой структуры данных для поиска запрошенного объекта.

Обратите внимание, что операции, которые обращаются к определенным разделам реестра, перенаправляются. Дополнительные сведения см. в статье Виртуализация реестра и 32-разрядные и 64-разрядные данные приложений в реестре.

Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0600 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.

Примечание

Заголовок winreg.h определяет RegGetValue как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows Vista, Windows XP Professional x64 Edition
Минимальная версия сервера Windows Server 2008, Windows Server 2003 с пакетом обновления 1 (SP1)
Целевая платформа Windows
Header winreg.h (включая Windows.h)
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

RegCreateKeyEx

RegEnumKeyEx

RegEnumValue

RegOpenKeyEx

RegQueryInfoKey

Функции реестра

Общие сведения о реестре