setUserObjectSecurity 函数 (winuser.h)

SetUserObjectSecurity 函数设置用户对象的安全性。 例如,这可以是窗口或 DDE 对话。

语法

BOOL SetUserObjectSecurity(
  [in] HANDLE                hObj,
  [in] PSECURITY_INFORMATION pSIRequested,
  [in] PSECURITY_DESCRIPTOR  pSID
);

参数

[in] hObj

为其设置了安全信息的用户对象的句柄。

[in] pSIRequested

指向值的指针,该值指示要设置 的安全描述符 的组件。 此参数可以是以下值的组合。

含义
DACL_SECURITY_INFORMATION
(对象的 DACL) 设置 自由访问控制列表hObj 指定的句柄必须具有WRITE_DAC访问权限,或者调用进程必须是对象的所有者。
GROUP_SECURITY_INFORMATION
设置对象的主要组 安全标识符 (SID) 。
OWNER_SECURITY_INFORMATION
设置对象的所有者的 SID。 hObj 指定的句柄必须具有WRITE_OWNER访问权限,或者调用进程必须是对象的所有者或启用SE_TAKE_OWNERSHIP_NAME特权。
SACL_SECURITY_INFORMATION
(对象的 SACL) 设置 系统访问控制列表hObj 指定的句柄必须具有ACCESS_SYSTEM_SECURITY访问权限。

获取ACCESS_SYSTEM_SECURITY访问权限

  1. 在调用方当前访问令牌中启用SE_SECURITY_NAME特权
  2. 打开ACCESS_SYSTEM_SECURITY访问的句柄。
  3. 禁用特权。

[in] pSID

指向包含新安全信息的 SECURITY_DESCRIPTOR 结构的指针。

此缓冲区必须在 4 字节边界上对齐。

返回值

如果函数成功,则函数返回非零值。

如果函数失败,则返回零。 要获得更多的错误信息,请调用 GetLastError。

注解

SetUserObjectSecurity 函数将安全描述符中指定的更改应用于分配给用户对象的安全描述符。 对象的安全描述符必须采用 自相对 形式。 如有必要,此函数分配额外的内存以增加安全描述符的大小。

示例

有关使用此函数的示例,请参阅 启动交互式客户端进程

要求

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

另请参阅

GetUserObjectSecurity

低级别访问控制

低级别访问控制函数

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurity