Функция 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

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

RegCloseKey

RegCreateKeyTransacted

RegDeleteKeyTransacted

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

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