DuplicateTokenEx 関数 (securitybaseapi.h)
DuplicateTokenEx 関数は、既存のトークンを複製する新しい アクセス トークン を作成します。 この関数は、プライマリ トークン または 偽装トークンを作成できます。
構文
BOOL DuplicateTokenEx(
[in] HANDLE hExistingToken,
[in] DWORD dwDesiredAccess,
[in, optional] LPSECURITY_ATTRIBUTES lpTokenAttributes,
[in] SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
[in] TOKEN_TYPE TokenType,
[out] PHANDLE phNewToken
);
パラメーター
[in] hExistingToken
TOKEN_DUPLICATE アクセスで開かれたアクセス トークンへのハンドル。
[in] dwDesiredAccess
新しいトークンに対して要求されたアクセス権を指定します。 DuplicateTokenEx 関数は、要求されたアクセス権を既存のトークンの 随意アクセス制御リスト (DACL) と比較して、許可または拒否される権限を決定します。 既存のトークンと同じアクセス権を要求するには、ゼロを指定します。 呼び出し元に対して有効なすべてのアクセス権を要求するには、MAXIMUM_ALLOWEDを指定します。
アクセス トークンのアクセス権の一覧については、「Access-Token オブジェクトのアクセス権
[in, optional] lpTokenAttributes
新しいトークンの セキュリティ記述子 を指定し、子プロセスがトークンを継承できるかどうかを判断する SECURITY_ATTRIBUTES 構造体へのポインター。
新しいトークンのセキュリティ記述子で所有者を設定するには、呼び出し元のプロセス トークンに SE_RESTORE_NAME 特権が設定されている必要があります。
[in] ImpersonationLevel
新しいトークンの偽装レベルを示す SECURITY_IMPERSONATION_LEVEL 列挙体の値を指定します。
[in] TokenType
TOKEN_TYPE 列挙体から次のいずれかの値を指定します。
価値 | 意味 |
---|---|
|
新しいトークンは、CreateProcessAsUser 関数で使用できる プライマリ トークン です。 |
|
新しいトークンは偽装トークンです。 |
[out] phNewToken
新しいトークンを受け取る HANDLE 変数へのポインター。
新しいトークンの使用が完了したら、CloseHandle 関数を呼び出してトークン ハンドルを閉じます。
戻り値
関数が成功した場合、関数は 0 以外の値を返します。
関数が失敗すると、0 が返されます。 拡張エラー情報を取得するには、GetLastError
備考
DuplicateTokenEx 関数を使用すると、CreateProcessAsUser 関数で使用できる プライマリ トークン を作成できます。 これにより、クライアントを偽装しているサーバー アプリケーションは、クライアントの
DuplicateTokenEx
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | securitybaseapi.h (Windows.h を含む) |
ライブラリ | Advapi32.lib |
DLL | Advapi32.dll |
関連項目
CloseHandle の
CreateProcessAsUser の
DdeImpersonateClient の
DuplicateToken の
RpcImpersonateClient の