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


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

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

Синтаксис

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, то при загрузке вызывающего объекта куст нельзя будет снова загрузить. Это предотвращает доступ к этому кусту реестра со стороны другого вызывающего объекта.

Reserved

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

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

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

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

Комментарии

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

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

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

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

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

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

Примечание

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

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header winreg.h (включая Windows.h)
Библиотека Advapi32.lib
DLL Advapi32.dll

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

RegSaveKey

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

Куст реестра