AddAccessDeniedObjectAce 関数 (securitybaseapi.h)
AddAccessDeniedObjectAce 関数は、随意アクセス制御リスト (DACL) の末尾にアクセス拒否アクセス制御エントリ (ACE) を追加します。 新しい ACE は、オブジェクト、またはオブジェクトのプロパティ セットまたはプロパティへのアクセスを拒否できます。 AddAccessDeniedObjectAce を使用して、指定した種類の子オブジェクトのみが継承できる ACE を追加することもできます。
構文
BOOL AddAccessDeniedObjectAce(
[in, out] PACL pAcl,
[in] DWORD dwAceRevision,
[in] DWORD AceFlags,
[in] DWORD AccessMask,
[in, optional] GUID *ObjectTypeGuid,
[in, optional] GUID *InheritedObjectTypeGuid,
[in] PSID pSid
);
パラメーター
[in, out] pAcl
DACL へのポインター。 AddAccessDeniedObjectAce 関数は、この DACL の末尾にアクセス拒否 ACE を追加します。 ACE は、 ACCESS_DENIED_OBJECT_ACE 構造の形式です。
[in] dwAceRevision
変更する DACL のリビジョン レベルを指定します。 この値はACL_REVISION_DSする必要があります。 DACL のリビジョン レベルがACL_REVISION_DSよりも低い場合、関数によってACL_REVISION_DSに変更されます。
[in] AceFlags
ACE 継承を制御するビット フラグのセット。 この関数は、新しい ACE のACE_HEADER構造体の AceFlags メンバーにこれらのフラグを設定します。 このパラメーターは、次の値と組み合わせて使用できます。
値 | 意味 |
---|---|
|
ACE はコンテナー オブジェクトによって継承されます。 |
|
ACE は 、アクセス制御リスト (ACL) が割り当てられているオブジェクトには適用されませんが、子オブジェクトによって継承できます。 |
|
継承された ACE を示します。 このフラグを使用すると、オブジェクトのツリーのセキュリティを変更する操作で、オブジェクトに直接適用された ACE は変更されず、継承された ACE を変更できます。 |
|
OBJECT_INHERIT_ACEビットとCONTAINER_INHERIT_ACE ビットは、継承された ACE には反映されません。 |
|
ACE は、非コンテナー オブジェクトによって継承されます。 |
[in] AccessMask
新しい ACE が指定したセキュリティ識別子 (SID) に対して拒否するアクセス権を指定するために、ACCESS_MASK形式を使用するビット フラグのセット。
[in, optional] ObjectTypeGuid
新しい ACE によって保護されるオブジェクト、プロパティ セット、またはプロパティの種類を識別する GUID 構造体へのポインター。 このパラメーターが NULL の場合、新しい ACE は ACL が割り当てられているオブジェクトを保護します。
[in, optional] InheritedObjectTypeGuid
新しい ACE を継承できるオブジェクトの種類を識別する GUID 構造体へのポインター。 このパラメーターが NULL 以外の場合は、指定したオブジェクト型のみが ACE を継承できます。 NULL の場合、任意の種類の子オブジェクトが ACE を継承できます。 どちらの場合も、継承は AceFlags パラメーターの値と、子オブジェクトに配置された継承に対する保護によっても制御されます。
[in] pSid
新しい ACE がアクセスを許可するユーザー、グループ、または ログオン セッション を識別する SID へのポインター。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 考えられるエラー値を次に示します。
リターン コード | 説明 |
---|---|
|
新しい ACE は ACL に適合しません。 より大きな ACL バッファーが必要です。 |
|
指定された ACL が正しく形成されていません。 |
|
AceFlags パラメーターが無効です。 |
|
指定された SID が構造的に有効ではありません。 |
|
指定されたリビジョンが不明であるか、ACL のリビジョンと互換性がありません。 |
|
ACE が正常に追加されました。 |
注釈
ObjectTypeGuid と InheritedObjectTypeGuid の両方が NULL の場合は、AddAccessDeniedObjectAce ではなく AddAccessDeniedAceEx 関数を使用します。 これは、 ACCESS_DENIED_ACEがACCESS_DENIED_OBJECT_ACE よりも小さく効率的であるために推奨 されます。
AddAccessDeniedObjectAce 関数は ACL の末尾に新しい ACE を追加しますが、アクセス拒否 ACE は ACL の先頭に表示されます。 呼び出し元は、ACE が正しい順序で DACL に追加されていることを確認する必要があります。 詳細については、「DACL 内の ACE の順序」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | securitybaseapi.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |