CDacl 类

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

重要

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

语法

class CDacl : public CAcl

成员

公共构造函数

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

公共方法

名称 描述
CDacl::AddAllowedAce CDacl 对象添加允许的 ACE(访问控制项)。
CDacl::AddDeniedAce CDacl 对象添加拒绝的 ACE。
CDacl::GetAceCount 返回 CDacl 对象中 ACE(访问控制项)的数量。
CDacl::RemoveAce CDacl 对象中删除特定的访问控制项 (ACE)。
CDacl::RemoveAllAces 删除 CDacl 对象中包含的所有 ACE。

公共运算符

“属性” 描述
CDacl::operator = 赋值运算符。

注解

对象的安全描述符可以包含 DACL。 DACL 包含零个或多个 ACE(访问控制项),用于标识可以访问该对象的用户和组。 如果 DACL 为空(即包含零个 ACE),则不会显式授予访问权限,因此会隐式拒绝访问。 但是,如果对象的安全描述符没有 DACL,则该对象不受保护并且每个人都具有完全访问权限。

要检索对象的 DACL,你必须是对象的所有者或对对象具有 READ_CONTROL 访问权限。 要更改对象的 DACL,你必须具有对该对象的 WRITE_DAC 访问权限。

使用提供的类方法添加、删除、创建和从 CDacl 对象删除 ACE。 另请参阅 AtlGetDaclAtlSetDacl

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

继承层次结构

CAcl

CDacl

要求

标头: atlsecurity.h

CDacl::AddAllowedAce

CDacl 对象添加允许的 ACE(访问控制项)。

bool AddAllowedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags = 0) throw(...);

bool AddAllowedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags,
    const GUID* pObjectType,
    const GUID* pInheritedObjectType) throw(...);

参数

rSid
CSid 对象。

AccessMask
指定要为指定的 CSid 对象的要允许的访问权限的掩码。

AceFlags
一组控制 ACE 继承的位标志。

pObjectType
对象类型。

pInheritedObjectType
继承的对象类型。

返回值

如果 ACE 添加到 CDacl 对象,则返回 TRUE;如果失败,则返回 FALSE。

备注

一个 CDacl 对象包含零个或多个 ACE(访问控制项),用于标识可以访问该对象的用户和组。 此方法添加一个允许访问 CDacl 对象的 ACE。

有关可在 AceFlags 参数中设置的各种标志的说明,请参阅 ACE_HEADER

CDacl::AddDeniedAce

CDacl 对象添加拒绝的 ACE(访问控制项)。

bool AddDeniedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags = 0) throw(...);

bool AddDeniedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags,
    const GUID* pObjectType,
    const GUID* pInheritedObjectType) throw(...);

参数

rSid
CSid 对象。

AccessMask
指定要为指定的 CSid 对象的要拒绝的访问权限的掩码。

AceFlags
一组控制 ACE 继承的位标志。 在方法的第一种形式中默认为 0。

pObjectType
对象类型。

pInheritedObjectType
继承的对象类型。

返回值

如果 ACE 添加到 CDacl 对象,则返回 TRUE;如果失败,则返回 FALSE。

备注

一个 CDacl 对象包含零个或多个 ACE(访问控制项),用于标识可以访问该对象的用户和组。 此方法添加一个拒绝访问 CDacl 对象的 ACE。

有关可在 AceFlags 参数中设置的各种标志的说明,请参阅 ACE_HEADER

CDacl::CDacl

构造函数。

CDacl (const ACL& rhs) throw(...);
CDacl () throw();

参数

rhs
现有的 ACL(访问控制列表)结构。

备注

CDacl 对象可以使用现有的 ACL 结构选择性地创建。 请务必注意,只有一个 DACL(自由访问控制列表)应该作为这个参数传递,但不是一个 SACL(系统访问控制列表)。 在调试版本中,传递 SACL 将导致 ASSERT。 在发布版本中,传递 SACL 将导致 ACL 中的 ACE(访问控制条目)被忽略,并且不会发生错误。

CDacl::~CDacl

析构函数。

~CDacl () throw();

注解

析构函数释放对象获取的所有资源,包括使用 CDacl::RemoveAllAces 的所有 ACE(访问控制条目)。

CDacl::GetAceCount

返回 CDacl 对象中 ACE(访问控制项)的数量。

UINT GetAceCount() const throw();

返回值

返回 CDacl 对象中包含的 ACE 数。

CDacl::operator =

赋值运算符。

CDacl& operator= (const ACL& rhs) throw(...);

参数

rhs
要分配给现有对象的 ACL(访问控制列表)。

返回值

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

备注

你应确保仅将 DACL(自由访问控制列表)传递给此函数。 将 SACL(系统访问控制列表)传递给此函数将在调试版本中导致 ASSERT,但在发布版本中不会导致错误。

CDacl::RemoveAce

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

void RemoveAce(UINT nIndex) throw();

参数

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

注解

此方法派生自 CAtlArray::RemoveAt

CDacl::RemoveAllAces

删除 CDacl 对象中包含的所有 ACE(访问控制项)。

void RemoveAllAces() throw();

注解

删除 CDacl 对象中的每个 ACE(访问控制条目)结构(如果有)。

另请参阅

安全示例
CAcl 类
ACL
ACEs
类概述
安全全局函数