AddMandatoryAce 函数 (securitybaseapi.h)

AddMandatoryAce 函数将 ACE () SYSTEM_MANDATORY_LABEL_ACE访问控制项添加到指定的系统访问控制列表 (SACL) 。

语法

BOOL AddMandatoryAce(
  [in, out] PACL  pAcl,
  [in]      DWORD dwAceRevision,
  [in]      DWORD AceFlags,
  [in]      DWORD MandatoryPolicy,
  [in]      PSID  pLabelSid
);

参数

[in, out] pAcl

指向 SACL 的指针。 此函数将强制 ACE 添加到此 SACL 的末尾。 ACE 采用 SYSTEM_MANDATORY_LABEL_ACE 结构的形式。

[in] dwAceRevision

正在修改的 SACL 的修订级别。 此值可以是以下值之一。

含义
ACL_REVISION
SACL 不包含特定于对象的 ACE。
ACL_REVISION_DS
SACL 包含对象指定的 ACE。

[in] AceFlags

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

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

含义
OBJECT_INHERIT_ACE
0x1
ACE 由非容器对象继承。
CONTAINER_INHERIT_ACE
0x2
ACE 由容器对象继承。
NO_PROPAGATE_INHERIT_ACE
0x4
OBJECT_INHERIT_ACE位和CONTAINER_INHERIT_ACE位不会传播到继承的 ACE。
INHERIT_ONLY_ACE
0x8
ACE 不适用于分配了 SACL 的对象,但 ACE 可由子对象继承。
INHERITED_ACE
0x10
继承 ACE。 更改对象树安全性的操作可能会修改继承的 ACE,而不会更改直接应用于对象的 ACE。

[in] MandatoryPolicy

强制完整性级别低于与包含此 ACE 的 SACL 关联的对象的主体的访问策略。

含义
SYSTEM_MANDATORY_LABEL_NO_WRITE_UP
0x1
强制级别低于 对象的主体无法写入对象。
SYSTEM_MANDATORY_LABEL_NO_READ_UP
0x2
强制级别低于 对象的主体无法读取对象。
SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP
0x4
强制级别低于 对象的主体无法执行该对象。

[in] pLabelSid

指向 SID 的指针,该指针指定与追加的 SACL 关联的对象的必需完整性级别。

返回值

如果函数成功,则返回 TRUE

如果函数失败,则返回 FALSE。 有关扩展的错误信息,请调用 GetLastError。 下面是可能的错误值。

返回代码/值 说明
ERROR_ALLOTTED_SPACE_EXCEEDED
0x540
新的 ACE 不适合 pAcl 缓冲区。

注解

若要编译使用此函数的应用程序,请将_WIN32_WINNT定义为 0x0600 或更高版本。 有关详细信息,请参阅 使用 Windows 标头

要求

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

另请参阅

SYSTEM_MANDATORY_LABEL_ACE