ACL 结构 (winnt.h)

ACL 结构是访问控制列表的标头 (ACL) 。 完整的 ACL 由 ACL 结构组成,后跟零个或多个 访问控制项 的有序列表, (ACE) 。

语法

typedef struct _ACL {
  BYTE AclRevision;
  BYTE Sbz1;
  WORD AclSize;
  WORD AceCount;
  WORD Sbz2;
} ACL;

成员

AclRevision

指定 ACL 的修订级别。 此值应ACL_REVISION,除非 ACL 包含特定于对象的 ACE,在这种情况下,必须ACL_REVISION_DS此值。 ACL 中的所有 ACE 必须处于同一修订级别。

Sbz1

指定在 16 位边界上对齐 AclRevision 成员的零字节填充

AclSize

指定 ACL 的大小(以字节为单位)。 此值包括 ACL 结构、所有 ACE 以及可能未使用的内存。

AceCount

指定 ACL 中存储的 ACE 数。

Sbz2

指定两个零字节的 填充 ,使 ACL 结构在 32 位边界上对齐。

注解

ACL 包括零个或多个 ACE 的顺序列表。 ACL 中的单个 ACE 的编号从 0 到 n,其中 n+1 是 ACL 中的 ACE 数。 编辑 ACL 时,应用程序通过 ACL 的索引引用 ACL 中的 ACE。

有两种类型的 ACL:自由裁量和系统。

(DACL) 的 任意访问控制列表 由对象的所有者或授予WRITE_DAC对象访问权限的任何人控制。 它指定特定的用户和组对对象的访问权限。 例如,文件的所有者可以使用 DACL 来控制哪些用户和组可以和不能访问该文件。

对象还可以具有与之关联的系统级安全信息,其形式为 系统访问控制列表 (SACL) 由系统管理员控制。 SACL 允许系统管理员审核获取对象访问权限的任何尝试。

有关当前定义的 ACE 结构的列表,请参阅 ACE

目前不支持第四个 ACE 结构 (SYSTEM_ALARM_ACE)。

ACL 结构被视为不透明结构,应用程序不会尝试直接使用其成员。 为了确保 ACL 在语义上正确,应用程序可以使用另请参阅部分中列出的函数来创建和操作 ACL。

每个 ACLACE 结构都从 DWORD 边界开始。

ACL(包括其 ACE)的最大大小为 64 KB。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 winnt.h (包括 Windows.h)

另请参阅

AddAce

DeleteAce

GetAclInformation

GetSecurityDescriptorDacl

GetSecurityDescriptorSacl

InitializeAcl

IsValidAcl

SetAclInformation

SetSecurityDescriptorDacl

SetSecurityDescriptorSacl