EXPLICIT_ACCESS_A结构(accctrl.h)

EXPLICIT_ACCESS 结构定义指定受托人的访问控制信息。 访问控制函数(如 SetEntriesInAclGetExplicitEntriesFromAcl),使用此结构描述 访问控制列表(ACL)访问控制项(ACE)中的信息。

语法

typedef struct _EXPLICIT_ACCESS_A {
  DWORD       grfAccessPermissions;
  ACCESS_MODE grfAccessMode;
  DWORD       grfInheritance;
  TRUSTEE_A   Trustee;
} EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;

成员

grfAccessPermissions

使用 ACCESS_MASK 格式指定 ACE 允许、拒绝或审核受托人的访问权限的一组位标志。 使用 EXPLICIT_ACCESS 结构的函数不会转换、解释或验证此掩码中的位。

grfAccessMode

来自 ACCESS_MODE 枚举的值。 对于 自由访问控制列表(DACL),此标志指示 ACL 是允许还是拒绝指定的访问权限。 对于 系统访问控制列表(SACL),此标志指示 ACL 是生成审核消息以成功尝试使用指定的访问权限,还是失败尝试,还是同时生成两者。 修改现有 ACL 时,可以指定REVOKE_ACCESS标志以删除指定受托人的任何现有 ACE。

grfInheritance

一组位标志,用于确定其他容器或对象是否可以从 ACL 附加到的主对象继承 ACE。 此成员的值对应于 ACE_HEADER 结构的 AceFlags 成员的继承部分(低序字节)。 此参数可以NO_INHERITANCE,以指示 ACE 不可继承;也可以是以下值的组合。

价值 意义
CONTAINER_INHERIT_ACE
主对象包含的其他容器继承 ACE。
INHERIT_NO_PROPAGATE
继承但不传播。
INHERIT_ONLY
仅继承。
INHERIT_ONLY_ACE
ACE 不适用于附加 ACL 的主对象,但主对象包含的对象继承 ACE。
NO_INHERITANCE
请勿继承。
NO_PROPAGATE_INHERIT_ACE
OBJECT_INHERIT_ACE和CONTAINER_INHERIT_ACE标志不会传播到继承的 ACE。
OBJECT_INHERIT_ACE
主对象包含的非容器对象继承 ACE。
SUB_CONTAINERS_AND_OBJECTS_INHERIT
主对象包含的容器和非容器对象都继承了 ACE。 此标志对应于CONTAINER_INHERIT_ACE和OBJECT_INHERIT_ACE标志的组合。
SUB_CONTAINERS_ONLY_INHERIT
主对象包含的其他容器继承 ACE。 此标志对应于CONTAINER_INHERIT_ACE标志。
SUB_OBJECTS_ONLY_INHERIT
主对象包含的非容器对象继承 ACE。 此标志对应于OBJECT_INHERIT_ACE标志。

Trustee

受托人 结构,用于标识 ACE 应用到的用户、组或程序(如 Windows 服务)。

言论

注意

accctrl.h 标头将EXPLICIT_ACCESS_定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows XP [仅限桌面应用]
支持的最低服务器 Windows Server 2003 [仅限桌面应用]
标头 accctrl.h

另请参阅

ACCESS_MASK

ACCESS_MODE

ACE

ACE_HEADER

ACL

BuildExplicitAccessWithName

BuildSecurityDescriptor

GetExplicitEntriesFromAcl

LookupSecurityDescriptorParts

SetEntriesInAcl

受托人