<Return[S]><Top>

SetEntriesInAcl

Declare Function Api_SetEntriesInAcl& Lib "advapi32" Alias "SetEntriesInAcl" (ByVal cCountOfExplicitEntries&, ByRef pListOfExplicitEntries As EXPLICIT_ACCESS, ByVal OldAcl As Struct_MembersOf_PACL, ByRef NewAcl As PACL)

Declare Function SetEntriesInAcl Lib "advapi32" Alias "SetEntriesInAcl" (ByVal cCountOfExplicitEntries As Long, ByRef pListOfExplicitEntries As EXPLICIT_ACCESS, ByVal OldAcl As Struct_MembersOf_PACL, ByRef NewAcl As PACL) As Long

新しいアクセス制御情報または新しい監査制御情報を既存の ACL(アクセス制御リスト)に結合することにより、新しい ACL を作成する。

パラメータ
cCountOfExplicitEntries
    pListOfExplicitEntries が指す配列内の 構造体の数を指定する。
pListOfExplicitEntries
    既存の ACL に結合するアクセス制御情報を記述する、複数の EXPLICIT_ACCESS 構造体からなる 1 つの配列へのポインタを指定す

    る。
OldAcl
    既存の ACL へのポインタを指定する。この関数が複数の EXPLICIT_ACCESS エントリに基づいて新しい ACL を作成する場合、このパラ

    メータは NULL でもかまわない。
NewAcl
    新しい ACL へのポインタを受け取る変数へのポインタを指定する。この関数が成功した場合、 関数を呼び出して、返されたバッファを解放

    しなければならない。

戻り値
    関数が成功すると、ERROR_SUCCESS が返る。
    関数が失敗すると、WINERROR.H 内で定義されている 0 以外のエラーコードが返る。

 

解説
    複数の EXPLICIT_ACCESS 構造体からなる配列内の各エントリは、指定されたトラスティのアクセス制御情報または監査制御情報を指

    定する。トラスティは、ユーザー、グループ、またはログオン識別子やログオンタイプ(たとえば Win32 サービスやバッチジョブなど)のような他

    の SID(セキュリティ ID)の値のいずれかである。名前または を使ってトラスティを識別できる。
    SetEntriesInAcl 関数を使って、DACL(随意アクセス制御リスト)または SACL(システムアクセス制御リスト)内の ACE(アクセス制御エントリ)

    のリストを変更できる。DACL はオブジェクトへのアクセスを制御し、SACL はオブジェクトへのアクセスを試みるシステムの監査機能を制御す

    る。SetEntriesInAcl 関数は、同じ 内にアクセス制御情報と監査制御情報を混在させることもできる。ただし、結果として得られた ACL

    は、意味のないエントリを保持することになる。
    DACL では、 構造体の grfAccessMode メンバは、トラスティに対してアクセス権利の許可、拒否、監査のどれを行うかを指示する。この

    メンバに、 列挙型の次のいずれかの値を指定する。

    値                             

意味                                                                                                            

    GRANT_ACCESS

 

指定された権利と、トラスティの任意の既存の権利を結合して、新しいアクセス許可 ACE を作成する。新しい

ACE が、トラスティの既存のアクセス許可 ACE を置き換える。指定された権利が、トラスティの既存のアクセス拒否 ACE によって拒否されている場合、この関数はそれらのアクセス拒否 ACE を変更または削除する。

    SET_ACCESS

 

GRANT_ACCESS に似ているが、新しいアクセス許可 ACE は指定された権利だけを許可し、既存のすべての権利を破棄する。また、このフラグは、トラスティの既存のすべてのアクセス拒否 ACE を削除する。

    DENY_ACCESS

 

 

新しいアクセス拒否 ACE を作成し、トラスティの既存のアクセス拒否 ACE を置き換える。新しい ACE は、トラスティの既存のアクセス拒否権利に加えて、指定された権利を拒否する。指定された権利が、トラスティの既存のアクセス許可 ACE によって許可されている場合、この関数はそれらのアクセス許可 ACE を変更または削除する。

    REVOKE_ACCESS

 

指定されたトラスティの既存のすべての ACE を削除する。この関数は、EXPLICIT_ACCESS 構造体の grfAccessPermissions メンバで指定された権利を無視する。

    SetEntriesInAcl 関数は、すべての新しいアクセス拒否 ACE を新しい の ACE リストの先頭に、配置する。一方、すべての新しいアクセ

    ス許可 ACE は、既存のあらゆるアクセス許可 ACE の直前に配置される。
    SACL では、 構造体の grfAccessMode メンバに次の値を指定する。

    値                                   

意味                                                                                                            

    REVOKE_ACCESS

 

指定されたトラスティの既存のすべての ACE を削除する。この関数は、EXPLICIT_ACCESS 構造体の grfAccessPermissions メンバで指定された権利を無視する。

    SET_AUDIT_SUCCESS

 

 

新しいシステム監査 ACE を作成し、トラスティの既存のシステム監査 ACE を置き換える。指定されたトラスティが、指定されたアクセス権利の使用に成功したとき、新しい ACE は監査メッセージを生成する。新しい

ACE は、指定された権利を、トラスティの既存の監査対象アクセス権利に結合する。この値と

SET_AUDIT_FAILURE を組み合わせて使うこともできる。

    SET_AUDIT_FAILURE

 

 

新しいシステム監査 ACE を作成し、トラスティの既存のシステム監査 ACE を置き換える。指定されたアクセス権利の使用に失敗したとき、新しい ACE は監査メッセージを生成する。新しい ACE は、指定された権利を、トラスティの既存の監査対象アクセス権利に結合する。この値と SET_AUDIT_SUCCESS を組み合わせて使うこともできる。

    SetEntriesInAcl 関数は、すべての新しいシステム監査 ACE を、新しい ACL の ACE リストの先頭に配置する。