<Return[O]><Top>

OpenThreadToken

Declare Function Api_OpenThreadToken& Lib "advapi32" Alias "OpenThreadToken" (ByVal ThreadHandle&, ByVal DesiredAccess&, ByVal OpenAsSelf&, TokenHandle&)

Declare Function OpenThreadToken Lib "advapi32" Alias "OpenThreadToken" (ByVal ThreadHandle As Long, ByVal DesiredAccess As Long, ByVal OpenAsSelf As Long, TokenHandle As Long) As Long

スレッドに関連付けられているアクセストークンを開く。

パラメータ
ThreadHandle
    開くアクセストークンを保持するスレッドを識別する。
DesiredAccess
    アクセストークンの要求アクセスタイプを指定するアクセスマスクを指定する。これらの要求アクセスタイプをトークンの DACL(随意アクセス制

    御リスト)と比較して、どのアクセスが許可され、どのアクセスが拒否されるかを決定する。
OpenAsSelf
    関数を呼び出したスレッドのセキュリティコンテキストと、スレッドを呼び出したプロセスのセキュリティコンテキストのどちらを使ってアクセスチェッ

    クを行うかを示すフラグを指定する。
    このパラメータが FALSE の場合、呼び出し側のスレッドのセキュリティコンテキストを使ってアクセスチェックを行います。このスレッドがクライ

    アントを偽装している場合、このセキュリティコンテキストはクライアントプロセスのセキュリティコンテキストであってもかまわない。このパラメータ

    が TRUE の場合、呼び出し側のスレッドのプロセスのセキュリティコンテキストを使ってアクセスチェックを行う。
TokenHandle
    この関数から制御が戻ったときに、新しく開かれたアクセストークンを識別するハンドルへのポインタを指定する。

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

解説
    サーバープロセスで OpenAsSelf パラメータを使うと、クライアントプロセスが SECURITY_IMPERSONATION_LEVEL 列挙型で

    SecurityIdentification 偽装レベルを指定したときに、そのクライアントプロセスに対応するアクセストークンを開くことができる。このパラメータ

    を使わない場合、呼び出し側のプロセスはクライアントのセキュリティコンテキストを使ってクライアントのアクセストークンを開くことができない。

    SecurityIdentification 偽装レベルを使って排他レベルのオブジェクトを開くことはできないからである。