CDacl クラス

このクラスは、DACL (随意アクセス制御リスト) 構造体のラッパーです。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

class CDacl : public CAcl

メンバー

パブリック コンストラクター

名前 説明
CDacl::CDacl コンストラクター。
CDacl::~CDacl デストラクター。

パブリック メソッド

名前 説明
CDacl::AddAllowedAce 許可される ACE (アクセス制御エントリ) を CDacl オブジェクトに追加します。
CDacl::AddDeniedAce 拒否される ACE を CDacl オブジェクトに追加します。
CDacl::GetAceCount CDacl オブジェクト内の ACE (アクセス制御エントリ) の数を返します。
CDacl::RemoveAce CDacl オブジェクトから特定の ACE (アクセス制御エントリ) を削除します。
CDacl::RemoveAllAces CDacl オブジェクトに含まれるすべての ACE を削除します。

パブリック演算子

名前 説明
CDacl::operator = 代入演算子。

解説

オブジェクトのセキュリティ記述子には、DACL を含めることができます。 DACL には、オブジェクトにアクセスできるユーザーとグループを識別する 0 個以上の ACE (アクセス制御エントリ) が含まれます。 DACL が空 (つまり、0 個の ACE を含む) の場合、明示的に許可されるアクセスはありません。そのため、アクセスは暗黙的に拒否されます。 ただし、オブジェクトのセキュリティ記述子に DACL が含まれていない場合、オブジェクトは保護されず、すべてのユーザーが完全なアクセス権を持ちます。

オブジェクトの DACL を取得するには、オブジェクトの所有者であるか、オブジェクトに対する READ_CONTROL を持っている必要があります。 オブジェクトの DACL を変更するには、そのオブジェクトに対する WRITE_DAC アクセス権が必要です。

CDacl オブジェクトの ACE の作成、追加、削除を行うには、提供されているクラス メソッドを使用します。 「AtlGetDacl」および「AtlSetDacl」も参照してください。

Windows のアクセス制御モデルの概要については、Windows SDK のアクセス制御に関するページをご覧ください。

継承階層

CAcl

CDacl

必要条件

ヘッダー: atlsecurity.h

CDacl::AddAllowedAce

許可される ACE (アクセス制御エントリ) を CDacl オブジェクトに追加します。

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 オブジェクトには、オブジェクトにアクセスできるユーザーとグループを識別する 0 個以上の ACE (アクセス制御エントリ) が含まれます。 このメソッドは、CDacl オブジェクトへのアクセスを許可する ACE を追加します。

AceFlags パラメーターで設定できるさまざまなフラグの説明については、「ACE_HEADER」を参照してください。

CDacl::AddDeniedAce

拒否される ACE (アクセス制御エントリ) を CDacl オブジェクトに追加します。

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 継承を制御するビット フラグのセット。 メソッドの 1 番目の形式では、既定値は 0 です。

pObjectType
オブジェクトの種類。

pInheritedObjectType
継承されたオブジェクトの型。

戻り値

ACE が CDacl オブジェクトに追加された場合は TRUE、失敗した場合は FALSE を返します。

解説

CDacl オブジェクトには、オブジェクトにアクセスできるユーザーとグループを識別する 0 個以上の ACE (アクセス制御エントリ) が含まれます。 このメソッドは、CDacl オブジェクトへのアクセスを拒否する ACE を追加します。

AceFlags パラメーターで設定できるさまざまなフラグの説明については、「ACE_HEADER」を参照してください。

CDacl::CDacl

コンストラクター。

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

パラメーター

rhs
既存の ACL (アクセス制御リスト) 構造体。

解説

CDacl オブジェクトは、必要に応じて、既存の ACL 構造体を使用して作成できます。 SACL (システム アクセス制御リスト) ではなく、DACL (随意アクセス制御リスト) のみをこのパラメーターとして渡す必要がある点に注意してください。 デバッグ ビルドでは、SACL を渡すと ASSERT が発生します。 リリース ビルドでは、SACL を渡すと、ACL 内の ACE (アクセス制御エントリ) が無視され、エラーは発生しません。

CDacl::~CDacl

デストラクター。

~CDacl () throw();

解説

デストラクターによって、すべての ACE (アクセス制御エントリ) を含め、オブジェクトで取得されたすべてのリソースが CDacl::RemoveAllAces を使用して解放されます。

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
ACE
クラスの概要
セキュリティに関するグローバル関数