RegGetKeySecurity 函数 (winreg.h)

RegGetKeySecurity 函数检索保护指定打开的注册表项的安全描述符的副本。

语法

LSTATUS RegGetKeySecurity(
  [in]            HKEY                 hKey,
  [in]            SECURITY_INFORMATION SecurityInformation,
  [out, optional] PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in, out]       LPDWORD              lpcbSecurityDescriptor
);

参数

[in] hKey

要检索其安全描述符的打开密钥的句柄。

[in] SecurityInformation

一个SECURITY_INFORMATION值,该值指示请求的安全信息。

[out, optional] pSecurityDescriptor

指向缓冲区的指针,该缓冲区接收请求的安全描述符的副本。

[in, out] lpcbSecurityDescriptor

指向变量的指针,该变量指定 pSecurityDescriptor 参数指向的缓冲区的大小(以字节为单位)。 当函数返回时,变量包含写入缓冲区的字节数。

返回值

如果函数成功,该函数将返回ERROR_SUCCESS。

如果该函数失败,它将返回 WinError.h 中定义的非零错误代码。 可以将 FormatMessage 函数与 FORMAT_MESSAGE_FROM_SYSTEM 标志结合使用来获取错误的常规说明。

注解

如果 pSecurityDescriptor 参数指定的缓冲区太小,则函数将返回ERROR_INSUFFICIENT_BUFFER,并且 lοSecurityDescriptor 参数包含所请求的安全描述符所需的字节数。

若要从密钥的安全描述符读取所有者、组或 自由访问控制列表 (DACL) ,必须在打开句柄时授予调用 进程 READ_CONTROL访问权限。 若要获取READ_CONTROL访问权限,调用方必须是密钥的所有者,或者密钥的 DACL 必须授予访问权限。

若要从安全描述符中读取 系统访问控制列表 (SACL) ,必须在打开密钥时授予调用进程ACCESS_SYSTEM_SECURITY访问权限。 获取此访问权限的正确方法是在调用方当前令牌中启用SE_SECURITY_NAME特权,打开ACCESS_SYSTEM_SECURITY访问的句柄,然后禁用该权限。

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winreg.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

FormatMessage

低级别访问控制

低级别访问控制函数

RegDeleteKey

RegOpenKeyEx

RegSetKeySecurity

SECURITY_INFORMATION