<Return[A]><Top>

AdjustTokenGroups

Declare Function Api_AdjustTokenGroups& Lib "advapi32" Alias "AdjustTokenGroups" (ByVal TokenHandle&, ByVal ResetToDefault&, NewState As TOKEN_GROUPS, ByVal BufferLength&, PreviousState As TOKEN_GROUPS, ReturnLength&)

Declare Function AdjustTokenGroups Lib "advapi32" Alias "AdjustTokenGroups" (ByVal TokenHandle As Long, ByVal ResetToDefault As Long, NewState As TOKEN_GROUPS, ByVal BufferLength As Long, PreviousState As TOKEN_GROUPS, ReturnLength As Long) As Long

指定したアクセストークン内のグループを調整する。アクセストークン内のグループを有効または無効にするには、TOKEN_ADJUST_GROUPS アクセス権が必要である。

パラメータ
TokenHandle
    変更したいグループを保持するアクセストークンを識別する。このハンドルは、トークンに対する TOKEN_ADJUST_GROUPS アクセス権を

    備えていなければならない。PreviousState パラメータが NULL ではない場合、このハンドルは TOKEN_QUERY アクセス権も必要であ

    る。
ResetToDefault
    グループの既定の設定を有効にするか無効にするかを指定する。この値が TRUE の場合、グループは既定の状態に設定され、

    NewState パラメータは無視される。FALSE の場合、NewState パラメータが指す情報に従って、グループは設定される。
NewState
    状態を設定したいグループを保持している TOKEN_GROUPS 構造体へのポインタを指定する。ResetToDefault パラメータが FALSE の場

    合、この関数は各グループを、TOKEN_GROUPS 構造体に記録されているグループごとの SE_GROUP_ENABLED 属性の値に設定す

    る。ResetToDefault が TRUE の場合、このパラメータは無視される。
BufferLength
    PreviousState パラメータが指すバッファのサイズをバイト単位で指定する。PreviousState パラメータが NULL の場合、このパラメータは 0

    でもかまわない。
PreviousState
    この関数の変更対象となるグループの、従来の状態を保持する TOKEN_GROUPS 構造体を受け取るバッファへのポインタを指定する。こ

    のパラメータは、NULL でもかまわない。
    指定したバッファが、変更後のグループの完全なリストを受け取るのに十分な大きさを備えていない場合、どのグループの状態も変更される

    ことなく、関数は失敗する。この場合、ReturnLength パラメータが指す変数の値は、変更後のグループの完全なリストを保持するために

    必要なバイト数に設定される。
ReturnLength
    PreviousState パラメータが指すバッファが必要とするバイト数を保持するために、この関数が設定した変数へのポインタである。

    PreviousState が NULL の場合、このパラメータは NULL でもかまわないが、そのときこのパラメータは無視される。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    PreviousState パラメータが受け取った情報は、TOKEN_GROUPS 構造体と同じ形式に設定される。これは、次に AdjustTokenGroups

    関数を呼び出す際に、バッファへのポインタを NewState パラメータとして渡し、グループの元の値を復元できることを意味する。
    NewState パラメータは、現在アクセストークン内に存在しない、変更予定のグループを列挙できる。このパラメータは、トークン内のグルー

    プの変更が成功するかどうかに影響を及ぼさない。
    固定グループは無効にできない。これらのグループは、TOKEN_GROUPS 構造体内の SE_GROUP_MANDATORY 属性によって識別

    される。固定グループを無効にしようとすると、AdjustTokenGroups 関数は失敗し、すべてのグループを変更前の状態に保つ。
    SE_GROUP_USE_FOR_DENY_ONLY 属性を備えているグループは有効にできない。