<Return[C]><Top>

CheckTokenMembership

Declare Function Api_CheckTokenMembership& Lib "advapi32" Alias "CheckTokenMembership" (ByVal TokenHandle&, ByRef SidToCheck As SID, ByRef IsMember&)

Declare Function CheckTokenMembership Lib "advapi32" Alias "CheckTokenMembership" (ByVal TokenHandle As Long, ByRef SidToCheck As SID, ByRef IsMember As Long) As Long

指定した SID(セキュリティ ID)がアクセストークン内で有効になっているかどうかを調べる。

パラメータ
TokenHandle
    アクセストークンのハンドルを指定する。このハンドルには、トークンに対する TOKEN_QUERY アクセス権が必要である。また、このトーク

    ンは偽装トークンでなければならない。
    TokenHandle が NULL の場合、CheckTokenMembership 関数は、呼び出し側スレッドの偽装トークンを使う。このスレッドが偽装を行っ

    ていない場合、スレッドのプライマリトークンを複写して偽装トークンを作成する。
SidToCheck
    SID へのポインタを指定する。CheckTokenMembership 関数は、アクセストークンのユーザー SID とグループ SID の中にこの SID が存在

    するかどうかをチェックする。
IsMember
    チェックの結果を受け取る BOOL 型変数へのポインタを指定する。SID が存在し、SE_GROUP_ENABLED 属性が有効になっている場

    合、IsMember は TRUE を返す。それ以外の場合は FALSE を返す。

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

解説
    CheckTokenMembership 関数は、アクセストークン内に SID が存在して有効になっているかどうかを簡単にチェックできる。
    トークン内に SID が存在したとしても、システムがアクセスをチェックする際にこの SID を使うとは限らない。SID が無効になっていたり、

    SE_GROUP_USE_FOR_DENY_ONLY 属性がセットされている可能性もある。システムはアクセスチェックを行う際に、有効になっている

    SID だけを使ってアクセスを許可する。
    TokenHandle が制限されたトークンである場合や、TokenHandle が NULL で、呼び出し側スレッドの現在有効なトークンが制限されたト

    ークンである場合、CheckTokenMembership 関数は、制限された複数の SID からなるリスト内にこの SID が存在するかどうかもチェックす

    る。