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 メンバーにこれらのフラグを設定します。 このパラメーターは、次の値と組み合わせて使用できます。

意味
CONTAINER_INHERIT_ACE
ACE はコンテナー オブジェクトによって継承されます。
INHERIT_ONLY_ACE
ACE は 、アクセス制御リスト (ACL) が割り当てられているオブジェクトには適用されませんが、子オブジェクトによって継承できます。
INHERITED_ACE
継承された ACE を示します。 このフラグを使用すると、オブジェクトのツリーのセキュリティを変更する操作で、オブジェクトに直接適用された ACE は変更されず、継承された ACE を変更できます。
NO_PROPAGATE_INHERIT_ACE
OBJECT_INHERIT_ACEビットとCONTAINER_INHERIT_ACE ビットは、継承された ACE には反映されません。
OBJECT_INHERIT_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 を呼び出します。 考えられるエラー値を次に示します。

リターン コード 説明
ERROR_ALLOTTED_SPACE_EXCEEDED
新しい ACE は ACL に適合しません。 より大きな ACL バッファーが必要です。
ERROR_INVALID_ACL
指定された ACL が正しく形成されていません。
ERROR_INVALID_FLAGS
AceFlags パラメーターが無効です。
ERROR_INVALID_SID
指定された SID が構造的に有効ではありません。
ERROR_REVISION_MISMATCH
指定されたリビジョンが不明であるか、ACL のリビジョンと互換性がありません。
ERROR_SUCCESS
ACE が正常に追加されました。

注釈

ObjectTypeGuidInheritedObjectTypeGuid の両方が 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

こちらもご覧ください

ACCESS_DENIED_ACE

ACCESS_DENIED_OBJECT_ACE

ACCESS_MASK

ACE_HEADER

AddAccessAllowedObjectAce

AddAccessDeniedAceEx

AddAuditAccessObjectAce

GUID

低レベルのAccess Control

低レベルのAccess Control関数