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 |