AddResourceAttributeAce 函数 (securitybaseapi.h)

AddResourceAttributeAce 函数将 ACE () SYSTEM_RESOURCE_ATTRIBUTE_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 继承的位标志。 函数在新 ACE 的 ACE_HEADER 结构的 AceFlags 成员中设置这些标志。

为了与 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 [仅限桌面应用]
目标平台 Windows
标头 securitybaseapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

标准访问权限