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 のアクセス制御に関するページをご覧ください。
継承階層
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
(アクセス制御エントリ) 構造体を削除します (ある場合)。