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

另请参阅

CreatePrivateObjectSecurity

GetKernelObjectSecurity

GetPrivateObjectSecurity

低级别访问控制

低级别访问控制函数

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetUserObjectSecurity