Поделиться через


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

Загружает указанный hive реестра в виде hive приложения.

Синтаксис

LSTATUS RegLoadAppKeyA(
  [in]  LPCSTR lpFile,
  [out] PHKEY  phkResult,
  [in]  REGSAM samDesired,
  [in]  DWORD  dwOptions,
        DWORD  Reserved
);

Параметры

[in] lpFile

Имя файла hive. Этот куст должен быть создан с помощью функции RegSaveKey или RegSaveKeyEx. Если файл не существует, создается пустой файл hive с указанным именем.

[out] phkResult

Указатель на дескриптор для корневого ключа загруженного куста.

Единственным способом доступа к ключам в кусте является этот дескриптор. Реестр не позволит приложению получать доступ к ключам в этом кусте, используя абсолютный путь к ключу. В результате невозможно перейти к этому кусту через пространство имен реестра.

[in] samDesired

Маска, указывающая права доступа, запрошенные для возвращаемого корневого ключа. Дополнительные сведения см. в разделе "Безопасность и права доступа реестра".

[in] dwOptions

Если этот параметр REG_PROCESS_APPKEY, hive нельзя загрузить повторно, пока он загружается вызывающим элементом. Это предотвращает доступ к этому кусту реестра другим вызывающим объектом.

Reserved

Этот параметр зарезервирован.

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

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

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

Замечания

В отличие от RegLoadKey, RegLoadAppKey не загружает куст в HKEY_LOCAL_MACHINE или HKEY_USERS. Вместо этого куст загружается под специальным корнем, который не может быть перечислен. В результате нет способа перечисления кустов, загруженных в настоящее время RegLoadAppKey. Все операции с кустами, загруженные RegLoadAppKey должны выполняться относительно дескриптора, возвращенного в phkResult.

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

Все ключи внутри hive должны иметь один дескриптор безопасности, в противном случае функция завершится ошибкой. Этот дескриптор безопасности должен предоставить вызывающему объекту доступ, указанный параметром samDesired, или функция завершится ошибкой. Вы не можете использовать функцию regSetKeySecurity для любого ключа внутри куста.

В Windows 8 и более поздних версиях каждый процесс может вызывать RegLoadAppKey для загрузки нескольких кустов. В Windows 7 и более ранних версиях каждый процесс может загружать только один куст с помощью RegLoadAppKey одновременно.

Любой куст, загруженный с помощью RegLoadAppKey, автоматически выгружается при закрытии всех дескрипторов ключей внутри куста с помощью RegCloseKey.

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

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2008 [только классические приложения]
целевая платформа Виндоус
заголовка winreg.h (включая Windows.h)
библиотеки Advapi32.lib
DLL Advapi32.dll

См. также

RegSaveKey

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

Реестра Hive