SeImpersonateClientEx 関数 (ntifs.h)
SeImpersonateClientEx ルーチンを使用すると、スレッドはユーザーを偽装します。
構文
NTSTATUS SeImpersonateClientEx(
[in] PSECURITY_CLIENT_CONTEXT ClientContext,
[in, optional] PETHREAD ServerThread
);
パラメーター
[in] ClientContext
ユーザーのセキュリティ クライアント コンテキストへのポインター。
[in, optional] ServerThread
ユーザーを偽装するスレッドへのポインター。 指定しない場合は、呼び出し元のスレッドが使用されます。
戻り値
SeImpersonateClientEx は 、次のような適切な NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
|
偽装の試行が成功しました。 |
|
ServerThread パラメーターで指定されたスレッドには、ClientContext パラメーターでセキュリティ クライアント コンテキストが指定されているユーザーを偽装するための十分なアクセス権がありませんでした。 |
|
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 |