此类是 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:这两种状态不同。