CAcl 类

此类是 ACL(访问控制列表)结构的包装器。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

class CAcl

成员

公共 Typedef

名称 描述
CAcl::CAccessMaskArray 一个 ACCESS_MASKs 数组。
CAcl::CAceFlagArray 一个字节数组。
CAcl::CAceTypeArray 一个字节数组。

公共构造函数

名称 描述
CAcl::CAcl 构造函数。
CAcl::~CAcl 析构函数。

公共方法

名称 描述
CAcl::GetAceCount 返回访问控制条目 (ACE) 对象的数量。
CAcl::GetAclEntries CAcl 对象中检索访问控制列表 (ACL) 条目。
CAcl::GetAclEntry 检索有关 CAcl 对象中的条目的所有信息。
CAcl::GetLength 返回 ACL 的长度。
CAcl::GetPACL 返回 PACL(指向 ACL 的指针)。
CAcl::IsEmpty 测试 CAcl 对象的条目。
CAcl::IsNull 返回 CAcl 对象的状态。
CAcl::RemoveAce CAcl 对象中删除特定的访问控制项 (ACE)。
CAcl::RemoveAces CAcl 中删除应用于给定 CSid 的所有 ACE(访问控制条目)。
CAcl::SetEmpty CAcl 对象标记为空。
CAcl::SetNull CAcl 对象标记为 NULL。

公共运算符

“属性” 描述
CAcl::operator const ACL * CAcl 对象强制转换为 ACL 结构。
CAcl::operator = 赋值运算符。

备注

ACL 结构是 ACL(访问控制列表)的标头。 ACL 包括由零个或多个 ACE(访问控制条目)构成的顺序列表。 ACL 中的各个 ACE 采用从 0 到 n-1 的编号,其中 n 是 ACL 中的 ACE 数量。 编辑 ACL 时,应用程序将按索引引用 ACL 中的访问控制条目 (ACE)。

有两种 ACL 类型:

  • 自由

  • 系统

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

对象还可以有关联的系统级安全信息,这些信息采用系统管理员控制的系统 ACL 形式。 系统 ACL 允许系统管理员审核任何获取对象访问权限的企图。

有关更多详细信息,请参阅 Windows SDK 中的 ACL 介绍。

有关 Windows 中访问控制模型的简介,请参阅 Windows SDK 中的访问控制

要求

标头: atlsecurity.h

CAcl::CAccessMaskArray

ACCESS_MASK 对象的数组。

typedef CAtlArray<ACCESS_MASK> CAccessMaskArray;

备注

此 typedef 指定可用于存储访问控制条目 (ACE) 中使用的访问权限的数组类型。

CAcl::CAceFlagArray

一个字节数组。

typedef CAtlArray<BYTE> CAceFlagArray;

备注

此 typedef 指定用于定义访问控制条目 (ACE) 类型特定的控制标志的数组类型。 有关可能标志的完整列表,请参阅 ACE_HEADER 定义。

CAcl::CAceTypeArray

一个字节数组。

typedef CAtlArray<BYTE> CAceTypeArray;

备注

此 typedef 指定用于定义 ACCESS_ALLOWED_ACE_TYPE 或 ACCESS_DENIED_ACE_TYPE 等访问控制条目 (ACE) 对象的性质的数组类型。 有关可能类型的完整列表,请参阅 ACE_HEADER 定义。

CAcl::CAcl

构造函数。

CAcl() throw();
CAcl(const CAcl& rhs) throw(...);

参数

rhs
一个现有的 CAcl 对象。

备注

可以选择使用现有的 CAcl 对象创建 CAcl 对象。

CAcl::~CAcl

析构函数。

virtual ~CAcl() throw();

备注

析构函数释放对象获取的所有资源。

CAcl::GetAceCount

返回访问控制条目 (ACE) 对象的数量。

virtual UINT GetAceCount() const throw() = 0;

返回值

返回 CAcl 对象中的 ACE 条目数。

CAcl::GetAclEntries

CAcl 对象中检索访问控制列表 (ACL) 条目。

void GetAclEntries(
    CSid::CSidArray* pSids,
    CAccessMaskArray* pAccessMasks = NULL,
    CAceTypeArray* pAceTypes = NULL,
    CAceFlagArray* pAceFlags = NULL) const throw(...);

参数

pSids
指向 CSid 对象的数组的指针。

pAccessMasks
访问掩码。

pAceTypes
访问控制条目 (ACE) 类型。

pAceFlags
ACE 标志。

备注

此方法使用 CAcl 对象中包含的每个 ACE 对象的详细信息来填充数组参数。 不需要该特定数组的详细信息时,请使用 NULL。

每个数组的内容相互对应,即,CAccessMaskArray 数组的第一个元素对应于 CSidArray 数组中的第一个元素,以此类推。

有关 ACE 类型和标志的更多详细信息,请参阅 ACE_HEADER

CAcl::GetAclEntry

检索有关访问控制列表 (ACL) 中的条目的所有信息。

void GetAclEntry(
    UINT nIndex,
    CSid* pSid,
    ACCESS_MASK* pMask = NULL,
    BYTE* pType = NULL,
    BYTE* pFlags = NULL,
    GUID* pObjectType = NULL,
    GUID* pInheritedObjectType = NULL) const throw(...);

参数

nIndex
要检索的 ACL 条目的索引。

pSid
ACL 条目应用到的 CSid 对象。

pMask
掩码,指定用于授予访问权限或拒绝访问的权限。

pType
ACE 类型。

pFlags
ACE 标志。

pObjectType
对象类型。 如果未在 ACE 中指定对象类型,或者 ACE 不是 OBJECT ACE,则此参数将设置为 GUID_NULL。

pInheritedObjectType
继承的对象类型。 如果未在 ACE 中指定继承的对象类型,或者 ACE 不是 OBJECT ACE,则此参数将设置为 GUID_NULL。

备注

此方法将检索有关单个 ACE 的所有信息,它提供的信息比 CAcl::GetAclEntries 单独提供的信息更详细。

有关 ACE 类型和标志的更多详细信息,请参阅 ACE_HEADER

CAcl::GetLength

返回访问控制列表 (ACL) 的长度。

UINT GetLength() const throw();

返回值

返回保存 ACL 结构所需的长度(以字节为单位)。

CAcl::GetPACL

返回指向访问控制列表 (ACL) 的指针。

const ACL* GetPACL() const throw(...);

返回值

返回指向 ACL 结构的指针。

CAcl::IsEmpty

测试 CAcl 对象的条目。

bool IsEmpty() const throw();

注解

如果 CAcl 对象不为 NULL 且不包含任何条目,则返回 TRUE。 如果 CAcl 对象为 NULL 或至少包含一个条目,则返回 FALSE。

CAcl::IsNull

返回 CAcl 对象的状态。

bool IsNull() const throw();

返回值

如果 CAcl 对象为 NULL,则返回 TRUE,否则返回 FALSE。

CAcl::operator const ACL *

CAcl 对象强制转换为 ACL(访问控制列表)结构。

operator const ACL *() const throw(...);

注解

返回 ACL 结构的地址。

CAcl::operator =

赋值运算符。

CAcl& operator= (const CAcl& rhs) throw(...);

参数

rhs
要分配到现有对象的 CAcl

返回值

返回对更新的 CAcl 对象的引用。

CAcl::RemoveAce

CAcl 对象中删除特定的访问控制项 (ACE)。

void RemoveAce(UINT nIndex) throw();

参数

nIndex
要删除的 ACE 条目的索引。

备注

此方法派生自 CAtlArray::RemoveAt

CAcl::RemoveAces

CAcl 中删除应用于给定 CSid 的所有 ACE(访问控制条目)。

bool RemoveAces(const CSid& rSid) throw(...)

参数

rSid
CSid 对象的引用。

CAcl::SetEmpty

CAcl 对象标记为空。

void SetEmpty() throw();

注解

CAcl 可设置为空或 NULL:这两种状态不同。

CAcl::SetNull

CAcl 对象标记为 NULL。

void SetNull() throw();

备注

CAcl 可设置为空或 NULL:这两种状态不同。

另请参阅

类概述
安全全局函数