DuplicateToken 関数 (securitybaseapi.h)

DuplicateToken 関数は、既に存在するアクセス トークンを複製する新しいアクセス トークンを作成します。

構文

BOOL DuplicateToken(
  [in]  HANDLE                       ExistingTokenHandle,
  [in]  SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
  [out] PHANDLE                      DuplicateTokenHandle
);

パラメーター

[in] ExistingTokenHandle

TOKEN_DUPLICATE アクセスで開かれたアクセス トークンへのハンドル。

[in] ImpersonationLevel

新しいトークンの偽装レベルを指定する SECURITY_IMPERSONATION_LEVEL 列挙型を指定します。

[out] DuplicateTokenHandle

重複するトークンへのハンドルを受け取る変数へのポインター。 このハンドルには、新しいトークンへのTOKEN_IMPERSONATEとTOKEN_QUERYアクセス権があります。

新しいトークンの使用が完了したら、 CloseHandle 関数を呼び出してトークン ハンドルを閉じます。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

DuplicateToken 関数は偽装トークンを作成します。これは、SetThreadTokenImpersonateLoggedOnUser などの関数で使用できます。 DuplicateToken によって作成されたトークンは、プライマリ トークンを必要とする CreateProcessAsUser 関数では使用できません。 CreateProcessAsUser に渡すことができるトークンを作成するには、DuplicateTokenEx 関数を使用します。

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー securitybaseapi.h (Windows.h を含む)
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

アクセス制御の概要

基本的なAccess Control関数

CreateProcessAsUser

DuplicateTokenEx

ImpersonateLoggedOnUser

SECURITY_IMPERSONATION_LEVEL

SetThreadToken