CSecurityDesc::SetDacl
更新 : 2007 年 11 月
随意アクセス制御リスト (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