SetEntriesInAclA 関数 (aclapi.h)

SetEntriesInAcl 関数は、新しいアクセス制御または監査制御情報を既存の ACL 構造にマージすることで、新しいアクセス制御リスト (ACL) を作成します。

構文

DWORD SetEntriesInAclA(
  [in]           ULONG              cCountOfExplicitEntries,
  [in, optional] PEXPLICIT_ACCESS_A pListOfExplicitEntries,
  [in, optional] PACL               OldAcl,
  [out]          PACL               *NewAcl
);

パラメーター

[in] cCountOfExplicitEntries

pListOfExplicitEntries 配列内のEXPLICIT_ACCESS構造体の数。

[in, optional] pListOfExplicitEntries

既存の ACL にマージするアクセス制御情報を記述する EXPLICIT_ACCESS 構造体の配列へのポインター。

[in, optional] OldAcl

既存の ACL へのポインター。 このパラメーターには NULL を指定できます。この場合、関数は EXPLICIT_ACCESS エントリに基づいて新しい ACL を作成します。

[out] NewAcl

新しい ACL へのポインターを受け取る変数へのポインター。 関数が成功した場合は、返されるバッファーを解放するために LocalFree 関数を呼び出す必要があります。

戻り値

関数が成功した場合、関数はERROR_SUCCESSを返します。

関数が失敗した場合、WinError.h で定義されている 0 以外のエラー コードが返されます。

注釈

EXPLICIT_ACCESS構造体の配列内の各エントリは、指定されたトラスティのアクセス制御または監査制御情報を指定します。 トラスティには、ログオン識別子やログオンの種類 (Windows サービスやバッチ ジョブなど) など、ユーザー、グループ、またはその他のセキュリティ識別子 (SID) の値を指定できます。 名前または SID を使用してトラスティを識別できます。

SetEntriesInAcl 関数を使用すると、随意アクセス制御リスト (DACL) またはシステム アクセス制御リスト (SACL) 内のアクセス制御エントリ (ACE) の一覧を変更できます。 SetEntriesInAcl では、アクセス制御と監査制御情報を同じ ACL に混在させないように注意してください。ただし、結果の ACL には意味のないエントリが含まれます。

DACL の場合、EXPLICIT_ACCESS構造体の grfAccessMode メンバーは、トラスティのアクセス権を許可、拒否、または取り消すかどうかを指定します。 このメンバーは、次のいずれかの値を指定できます。

  • GRANT_ACCESS
  • SET_ACCESS
  • DENY_ACCESS
  • REVOKE_ACCESS
これらの値の詳細については、「 ACCESS_MODE」を参照してください。

SetEntriesInAcl 関数は、新しい ACL の ACE の一覧の先頭に、新しいアクセス拒否 ACE を配置します。 この関数は、既存のアクセスが許可された ACE の直前に、新しいアクセスが許可された ACE を配置します。

SACL の場合、EXPLICIT_ACCESS構造体の grfAccessMode メンバーは、次の値を指定できます。

  • REVOKE_ACCESS
  • SET_AUDIT_FAILURE
  • SET_AUDIT_SUCCESS
SET_AUDIT_FAILUREとSET_AUDIT_SUCCESSを組み合わせることができます。 これらの値の詳細については、「 ACCESS_MODE」を参照してください。

SetEntriesInAcl 関数は、新しい ACL の ACE の一覧の先頭に新しいシステム監査 ACE を配置します。

この関数を使用する例については、「 オブジェクトの ACL の変更 」または「 新しいオブジェクトのセキュリティ記述子の作成 」または「 オブジェクトの所有権の取得」を参照してください。

注意

aclapi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetEntriesInAcl を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー aclapi.h
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

ACCESS_ALLOWED_ACE

ACCESS_DENIED_ACE

ACL

アクセス制御

基本的なAccess Control関数

EXPLICIT_ACCESS

LocalFree

SYSTEM_AUDIT_ACE