SetSecurityDescriptorDacl 関数 (securitybaseapi.h)
SetSecurityDescriptorDacl 関数は、随意アクセス制御リスト (DACL) の情報を設定します。 DACL が セキュリティ記述子に既に存在する場合は、DACL が置き換えられます。
構文
BOOL SetSecurityDescriptorDacl(
[in, out] PSECURITY_DESCRIPTOR pSecurityDescriptor,
[in] BOOL bDaclPresent,
[in, optional] PACL pDacl,
[in] BOOL bDaclDefaulted
);
パラメーター
[in, out] pSecurityDescriptor
関数が DACL を追加する SECURITY_DESCRIPTOR 構造体へのポインター。 このセキュリティ記述子は 絶対 形式である必要があります。つまり、そのメンバーは、連続するデータへのオフセットではなく、他の構造体へのポインターである必要があります。
[in] bDaclPresent
セキュリティ記述子に DACL が存在することを示すフラグ。 このパラメーターが TRUE の場合、関数は SECURITY_DESCRIPTOR_CONTROL 構造体に SE_DACL_PRESENT フラグを設定し、pDacl パラメーターと bDaclDefaulted パラメーターの値を使用します。 このパラメーターが FALSE の場合、関数は SE_DACL_PRESENT フラグをクリアし、 pDacl と bDaclDefaulted は無視されます。
[in, optional] pDacl
セキュリティ記述子の DACL を指定する ACL 構造体へのポインター。 このパラメーターが NULL の場合、 NULL DACL がセキュリティ記述子に割り当てられ、オブジェクトへのすべてのアクセスが許可されます。 DACL は、セキュリティ記述子にコピーされずに参照されます。
[in] bDaclDefaulted
DACL のソースを示すフラグ。 このフラグが TRUE の場合、DACL は既定のメカニズムによって取得されています。 FALSE の場合、DACL はユーザーによって明示的に指定されています。 関数は、この値を SECURITY_DESCRIPTOR_CONTROL構造体の SE_DACL_DEFAULTED フラグに格納します。 このパラメーターが指定されていない場合は、SE_DACL_DEFAULTED フラグがクリアされます。
戻り値
関数が成功した場合、関数は 0 以外の値を返します。
関数が失敗すると、0 が返されます。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
空の DACL と存在しない DACL には、重要な違いがあります。 DACL が空の場合、 アクセス制御エントリ (ACE) は含まれません。そのため、アクセス権は明示的に付与されません。 その結果、オブジェクトへのアクセスは暗黙的に拒否されます。
オブジェクトに DACL がない場合 ( pDacl パラメーターが NULL の場合)、オブジェクトに保護は割り当てられず、すべてのアクセス要求が許可されます。 セキュリティを維持するには、DACL を使用してアクセスを制限します。
bDaclPresent フラグと pDacl パラメーターの異なる構成には、次の 3 つの結果が考えられます。
- pDacl パラメーターが DACL をポイントし、bDaclPresent フラグが TRUE の場合、DACL が指定され、オブジェクトへのアクセスを許可するアクセス許可 ACE が含まれている必要があります。
- pDacl パラメーターが DACL を指せず、bDaclPresent フラグが TRUE の場合、NULL DACL が指定されます。 すべてのアクセスが許可されます。 すべてのユーザーが DACL とセキュリティ記述子の所有者を変更できるため、オブジェクトで NULL DACL を使用しないでください。 これにより、 オブジェクトの使用が妨げになります。
- pDacl パラメーターが DACL を指せず、bDaclPresent フラグが FALSE の場合、継承または既定のメカニズムを使用してオブジェクトに DACL を指定できます。
例
この関数を使用する例については、「 新しいオブジェクトのセキュリティ記述子の作成」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | securitybaseapi.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |