AddAccessDeniedAceEx 函数 (securitybaseapi.h)

AddAccessDeniedAceEx 函数将拒绝访问的访问控制项 (ACE) 添加到自由访问控制列表的末尾, (DACL) 。

语法

BOOL AddAccessDeniedAceEx(
  [in, out] PACL  pAcl,
  [in]      DWORD dwAceRevision,
  [in]      DWORD AceFlags,
  [in]      DWORD AccessMask,
  [in]      PSID  pSid
);

参数

[in, out] pAcl

指向 DACL 的指针。 AddAccessDeniedAceEx 函数将拒绝访问的 ACE 添加到此 DACL 的末尾。 ACE 采用 ACCESS_DENIED_ACE 结构的形式。

[in] dwAceRevision

指定要修改的 DACL 的修订级别。 此值可以是ACL_REVISION或ACL_REVISION_DS。 如果 DACL 包含特定于对象的 ACE,请使用 ACL_REVISION_DS。

[in] AceFlags

一组控制 ACE 继承的位标志。 函数在新 ACE 的 ACE_HEADER 结构的 AceFlags 成员中设置这些标志。 此参数可以是以下值的组合。

含义
CONTAINER_INHERIT_ACE
ACE 由容器对象继承。
INHERIT_ONLY_ACE
ACE 不适用于将 访问控制列表 (ACL) 分配到的对象,但它可由子对象继承。
INHERITED_ACE
指示继承的 ACE。 此标志允许更改对象树上的安全性的操作修改继承的 ACE,同时不更改直接应用于对象的 ACE。
NO_PROPAGATE_INHERIT_ACE
OBJECT_INHERIT_ACE位和CONTAINER_INHERIT_ACE位不会传播到继承的 ACE。
OBJECT_INHERIT_ACE
ACE 由非容器对象继承。

[in] AccessMask

一组位标志,使用 ACCESS_MASK 格式指定新 ACE 拒绝对指定 安全标识符 的访问权限 (SID) 。

[in] pSid

指向 SID 的指针,用于标识新 ACE 拒绝访问的用户、组或 登录会话

返回值

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

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 下面是可能的错误值。

返回代码 说明
ERROR_ALLOTTED_SPACE_EXCEEDED
新的 ACE 不适合 ACL。 需要更大的 ACL 缓冲区。
ERROR_INVALID_ACL
指定的 ACL 格式不正确。
ERROR_INVALID_FLAGS
AceFlags 参数无效。
ERROR_INVALID_SID
指定的 SID 在结构上无效。
ERROR_REVISION_MISMATCH
指定的修订未知或与 ACL 的修订不兼容。
ERROR_SUCCESS
已成功添加 ACE。

注解

尽管 AddAccessDeniedAceEx 函数将新的 ACE 添加到 DACL 的末尾,但拒绝访问的 ACE 应出现在 DACL 的开头。 调用方必须确保 ACE 按正确的顺序添加到 DACL。 有关详细信息,请参阅 DACL 中 ACE 的顺序

要求

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

另请参阅

ACCESS_DENIED_ACE

ACCESS_MASK

ACE_HEADER

AddAccessAllowedAceEx

AddAuditAccessAceEx

低级别访问控制

低级别访问控制函数