AddResourceAttributeAce 函数 (securitybaseapi.h)

AddResourceAttributeAce 函数将 SYSTEM_RESOURCE_ATTRIBUTE_ACE访问控制项(ACE)添加到 系统访问控制列表(SACL)末尾。 SYSTEM_RESOURCE_ATTRIBUTE_ACE 结构指定属性名称和值排序的元素列表,这些元素与资源相关联,并在访问检查期间可能使用。 标准访问权限集在 标准访问权限 主题中定义。

语法

BOOL AddResourceAttributeAce(
  [in, out] PACL                                   pAcl,
  [in]      DWORD                                  dwAceRevision,
  [in]      DWORD                                  AceFlags,
  [in]      DWORD                                  AccessMask,
  [in]      PSID                                   pSid,
  [in]      PCLAIM_SECURITY_ATTRIBUTES_INFORMATION pAttributeInfo,
  [out]     PDWORD                                 pReturnLength
);

参数

[in, out] pAcl

指向 访问控制列表(ACL)的指针。 此函数将 ACE 添加到此 ACL。 此参数的值不能 NULL。 ACE 采用 SYSTEM_RESOURCE_ATTRIBUTE_ACE 结构的形式。

[in] dwAceRevision

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

[in] AceFlags

控制 ACE 继承的一组位标志。 该函数在 AceFlags 新 ACE ACE_HEADER 结构的成员中设置这些标志。

为了与 Windows 8 高级文件权限 UI 保持一致,应用程序应在 AceFlags 参数中指定CONTAINER_INHERIT_ACE和OBJECT_INHERIT_ACE标志。

此参数可以是以下值的组合。

价值 意义
CONTAINER_INHERIT_ACE
2 (0x2)
ACE 由容器对象继承。
INHERIT_ONLY_ACE
8 (0x8)
ACE 不适用于分配给 ACE 的对象,但可由子对象继承。
INHERITED_ACE
16 (0x10)
指示继承的 ACE。 此标志允许更改对象树上的安全性的操作,以修改继承的 ACE,同时不更改直接应用于对象的 ACE。
NO_PROPAGATE_INHERIT_ACE
4 (0x4)
OBJECT_INHERIT_ACE和CONTAINER_INHERIT_ACE位不会传播到继承的 ACE。
OBJECT_INHERIT_ACE
1 (0x1)
ACE 由非容器对象继承。

[in] AccessMask

对于 Windows 8 和 Windows Server 2012,必须为零。

[in] pSid

必须是 Windows 8 和 Windows Server 2012 的“每个人 SID”(S-1-1-0)。

[in] pAttributeInfo

指定将在 ACE 中的 SID 之后追加的属性信息。

[out] pReturnLength

使用的实际 ACL 缓冲区的大小(以字节为单位)。 如果由 pAcl 参数指定的缓冲区不够大,则此参数的值是 ACL 缓冲区所需的总大小。

返回值

如果函数成功,则返回 TRUE

如果该函数失败,则返回 FALSE。 若要获取扩展的错误信息,请调用 GetLastError

要求

要求 价值
最低支持的客户端 Windows 8 [仅限桌面应用]
支持的最低服务器 Windows Server 2012 [仅限桌面应用]
目标平台 窗户
标头 securitybaseapi.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

标准访问权限