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