随意アクセス制御リスト (DACL: Discretionary Access-Control List) に情報を設定します。 セキュリティ記述子に DACL が既にあれば、置き換えられます。
inline void SetDacl(
bool bPresent = true,
bool bDefaulted = false
) throw(...);
inline void SetDacl(
const CDacl & Dacl,
bool bDefaulted = false
) throw(...);
パラメーター
Dacl
セキュリティ記述子の DACL を指定する CDacl オブジェクトへの参照。 NULL は指定できません。 セキュリティ記述子に NULL の DACL を設定するには、bPresent を false に設定して、メソッドの最初の形式を使用する必要があります。bPresent
セキュリティ記述子に DACL があるかどうかを示すフラグ。 このパラメーターが true の場合、メソッドは SECURITY_DESCRIPTOR_CONTROL 構造体の SE_DACL_PRESENT フラグを設定し、Dacl と bDefaulted の各パラメーターの値を使用します。 このパラメーターが false の場合、メソッドは SE_DACL_PRESENT フラグをクリアし、bDefaulted を無視します。bDefaulted
DACL のソースを示すフラグ。 このフラグが true の場合、DACL は既定の機構によって取得されたものです。 このフラグが false の場合、DACL はユーザーによって明示的に指定されたものです。 メソッドは、SECURITY_DESCRIPTOR_CONTROL 構造体の SE_DACL_DEFAULTED フラグにこの値を格納します。 このパラメーターを指定しないと、SE_DACL_DEFAULTED フラグはクリアされます。
戻り値
正常に終了した場合は true を返します。それ以外の場合は false を返します。
解説
DACL が空であるのと存在しないのとでは、大きな違いがあります。 DACL が空であるときは、アクセス制御エントリを持たず、アクセス権も明示的に与えられていません。 その結果、オブジェクトへのアクセスは暗黙的に禁止されます。 一方、オブジェクトが DACL を持っていないときは、オブジェクトへの保護が与えられておらず、どのようなアクセス要求も許可されます。
必要条件
**ヘッダー:**atlsecurity.h