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 次。 尝试第 65,535 个 打开操作时,此函数失败并ERROR_NO_SYSTEM_RESOURCES。
注意
winreg.h 标头将 RegOpenKeyTransacted 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista [仅限桌面应用] |
支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winreg.h (包括 Windows.h) |
库 | Advapi32.lib |
DLL | Advapi32.dll |