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。 另请参阅 AtlGetDacl 和 AtlSetDacl。
有关 Windows 中访问控制模型的简介,请参阅 Windows SDK 中的访问控制。
继承层次结构
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
(访问控制条目)结构(如果有)。