SeImpersonateClientEx 関数 (ntifs.h)

SeImpersonateClientEx ルーチンを使用すると、スレッドはユーザーを偽装します。

構文

NTSTATUS SeImpersonateClientEx(
  [in]           PSECURITY_CLIENT_CONTEXT ClientContext,
  [in, optional] PETHREAD                 ServerThread
);

パラメーター

[in] ClientContext

ユーザーのセキュリティ クライアント コンテキストへのポインター。

[in, optional] ServerThread

ユーザーを偽装するスレッドへのポインター。 指定しない場合は、呼び出し元のスレッドが使用されます。

戻り値

SeImpersonateClientEx は 、次のような適切な NTSTATUS 値を返します。

リターン コード 説明
STATUS_SUCCESS
偽装の試行が成功しました。
STATUS_ACCESS_DENIED
ServerThread パラメーターで指定されたスレッドには、ClientContext パラメーターでセキュリティ クライアント コンテキストが指定されているユーザーを偽装するための十分なアクセス権がありませんでした。
STATUS_NO_MEMORY
SeImpersonateClientEx で、偽装情報構造体のメモリを割り当てるときにプール割り当てエラーが発生しました。

注釈

SeImpersonateClientEx は、スレッドがユーザーを偽装するために使用されます。 ClientContext のクライアント セキュリティ コンテキストは、最新であると見なされます。

信頼されていないユーザー スレッドの特権状態を上げることは非常に安全ではありません (たとえば、ユーザーのスレッドを取得し、LocalSystem を偽装します)。 信頼されていないユーザー スレッドに特権が発生した場合、ユーザーは昇格された後にスレッド トークンを取得し、システム全体のセキュリティを覆すことができます。

より高い特権の状態が必要な場合は、タスクを作業キューにディスパッチする必要があります。タスクは、システム ワーカー スレッドによって安全に処理できます。 この方法では、偽装は必要ありません。

ユーザーの偽装を終了するには、 SeStopImpersonatingClient ルーチンを 呼び出します。

PsImpersonateClient ルーチンを使用すると、サーバー スレッドがクライアントを偽装できます。

セキュリティとアクセス制御の詳細については、 ドライバー開発者向けの Windows セキュリティ モデル と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL

こちらもご覧ください

PsImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

SeStopImpersonatingClient