Функция RegOpenKeyTransactedA (winreg.h)
Открывает указанный раздел реестра и связывает его с транзакцией. Обратите внимание, что в именах ключей регистр не учитывается.
Синтаксис
LSTATUS RegOpenKeyTransactedA(
[in] HKEY hKey,
[in, optional] LPCSTR lpSubKey,
[in] DWORD ulOptions,
[in] REGSAM samDesired,
[out] PHKEY phkResult,
[in] HANDLE hTransaction,
PVOID pExtendedParemeter
);
Параметры
[in] hKey
Дескриптор открытого раздела реестра. Этот дескриптор возвращается функцией RegCreateKeyEx, RegCreateKeyTransacted, RegOpenKeyEx или RegOpenKeyTransacted . Это также может быть один из следующих предопределенных ключей:
HKEY_CLASSES_ROOTHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERS
[in, optional] lpSubKey
Имя открываемого подраздела реестра.
В именах ключей регистр не учитывается.
Если параметр lpSubKey имеет значение NULL или указатель на пустую строку, а hKey — предопределенный ключ, система обновляет предопределенный ключ, а phkResult получает тот же дескриптор hKey , переданный в функцию. В противном случае phkResult получает новый дескриптор открытого ключа.
Дополнительные сведения см. в разделе Ограничения размера элементов реестра.
[in] ulOptions
Этот параметр зарезервирован и должен быть равен нулю.
[in] samDesired
Маска, указывающая требуемые права доступа к ключу. Функция завершается ошибкой, если дескриптор безопасности ключа не разрешает запрошенный доступ для вызывающего процесса. Дополнительные сведения см. в разделе Безопасность раздела реестра и права доступа.
[out] phkResult
Указатель на переменную, которая получает дескриптор открытого ключа. Если раздел не является одним из предопределенных разделов реестра, вызовите функцию RegCloseKey после завершения использования дескриптора.
[in] hTransaction
Дескриптор активной транзакции. Этот дескриптор возвращается функцией CreateTransaction .
pExtendedParemeter
Этот параметр зарезервирован и должен иметь значение NULL.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет ERROR_SUCCESS.
Если функция завершается сбоем, возвращаемое значение представляет собой ненулевой код ошибки, определенный в Winerror.h. Чтобы получить общее описание ошибки, можно использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM.
Комментарии
При открытии ключа с помощью этой функции выполняются последующие операции с ключом. Если операция без транзакций выполняется с ключом до фиксации транзакции, выполняется откат транзакции. После фиксации или отката транзакции необходимо повторно открыть ключ с помощью функции RegCreateKeyTransacted или RegOpenKeyTransacted с активным дескриптором транзакции, чтобы выполнить дополнительные операции. Дополнительные сведения о транзакциях см. в разделе Диспетчер транзакций ядра.
Обратите внимание, что последующие операции с подразделами этого ключа не выполняются автоматически. Таким образом, функция RegDeleteKeyEx не выполняет транзакций операции удаления. Вместо этого используйте функцию RegDeleteKeyTransacted для выполнения транзакции операции удаления.
В отличие от функции RegCreateKeyTransacted функция RegOpenKeyTransacted не создает указанный ключ, если этот раздел не существует в реестре.
Если служба или приложение олицетворяет разных пользователей, не используйте эту функцию с HKEY_CURRENT_USER. Вместо этого вызовите функцию RegOpenCurrentUser .
Если ключ, возвращаемый в phkResult , является предопределенным разделом реестра, он не включается в указанную транзакцию.
Один раздел реестра можно открыть только 65 534 раза. При попытке 65535-й операции открытия эта функция завершается сбоем с ERROR_NO_SYSTEM_RESOURCES.
Примечание
Заголовок winreg.h определяет RegOpenKeyTransacted как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | winreg.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |