getUserObjectSecurity 函数 (winuser.h)
GetUserObjectSecurity 函数检索指定用户对象的安全信息。
语法
BOOL GetUserObjectSecurity(
[in] HANDLE hObj,
[in] PSECURITY_INFORMATION pSIRequested,
[in, out, optional] PSECURITY_DESCRIPTOR pSID,
[in] DWORD nLength,
[out] LPDWORD lpnLengthNeeded
);
参数
[in] hObj
要为其返回安全信息的用户对象的句柄。
[in] pSIRequested
指向 SECURITY_INFORMATION 值的指针,该值指定要请求的安全信息。
[in, out, optional] pSID
指向自相对格式的SECURITY_DESCRIPTOR结构的指针,该结构包含函数返回时请求的信息。 此缓冲区必须在 4 字节边界上对齐。
[in] nLength
pSD 参数指向的缓冲区的长度(以字节为单位)。
[out] lpnLengthNeeded
指向变量的指针,用于接收存储完整 安全描述符所需的字节数。 如果在函数返回时此变量的值大于 nLength 参数的值,则函数返回 FALSE ,并且不会将任何安全描述符复制到缓冲区。 否则,将复制整个安全描述符。
返回值
如果函数成功,该函数将返回非零值。
如果函数失败,则返回零。 要获得更多的错误信息,请调用 GetLastError。
注解
若要从用户对象的安全描述符读取所有者、组或 任意访问控制列表 (DACL) ,必须在打开句柄时授予调用 进程 READ_CONTROL访问权限。
若要从安全描述符 (SACL) 读取 系统访问控制列表 ,必须在打开句柄时向调用进程授予ACCESS_SYSTEM_SECURITY访问权限。 获取此访问权限的正确方法是在调用方当前令牌中启用SE_SECURITY_NAME特权,打开ACCESS_SYSTEM_SECURITY访问的句柄,然后禁用该权限。
示例
有关使用此函数的示例,请参阅 启动交互式客户端进程。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |