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

参照

参照

CSecurityDesc クラス

SetSecurityDescriptorDacl

CSecurityDesc::SetControl

CSecurityDesc::SetGroup

CSecurityDesc::SetOwner

CSecurityDesc::SetSacl

CSecurityDesc::GetDacl

その他の技術情報

CSecurityDesc のメンバ