Funzione DuplicateTokenEx (securitybaseapi.h)
La funzione DuplicateTokenEx
Sintassi
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
);
Parametri
[in] hExistingToken
Handle per un token di accesso aperto con accesso TOKEN_DUPLICATE.
[in] dwDesiredAccess
Specifica i diritti di accesso richiesti per il nuovo token. La funzione DuplicateTokenEx
Per un elenco dei diritti di accesso per i token di accesso, vedere Access Rights for Access-Token Objects.
[in, optional] lpTokenAttributes
Puntatore a una struttura SECURITY_ATTRIBUTES che specifica un descrittore di sicurezza per il nuovo token e determina se i processi figlio possono ereditare il token. Se lpTokenAttributes è NULL, il token ottiene un descrittore di sicurezza predefinito e l'handle non può essere ereditato. Se il descrittore di sicurezza contiene un elenco di controllo di accesso di sistema (SACL), il token ottiene ACCESS_SYSTEM_SECURITY diritto di accesso, anche se non è stato richiesto in dwDesiredAccess.
Per impostare il proprietario nel descrittore di sicurezza per il nuovo token, il token di processo del chiamante deve avere il privilegio SE_RESTORE_NAME impostato.
[in] ImpersonationLevel
Specifica un valore dell'enumerazione SECURITY_IMPERSONATION_LEVEL che indica il livello di rappresentazione del nuovo token.
[in] TokenType
Specifica uno dei valori seguenti dell'enumerazione TOKEN_TYPE.
Valore | Significato |
---|---|
|
Il nuovo token è un token primario |
|
Il nuovo token è un token di rappresentazione. |
[out] phNewToken
Puntatore a una variabile HANDLE
Al termine dell'uso del nuovo token, chiamare la funzione closehandle
Valore restituito
Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero.
Se la funzione ha esito negativo, restituisce zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Osservazioni
La funzione DuplicateTokenEx
Di seguito è riportato uno scenario tipico per l'uso di DuplicateTokenEx per creare un token primario . Un'applicazione server crea un thread che chiama una delle funzioni di rappresentazione, ad esempio ImpersonateNamedPipeClient, per rappresentare un client. Il thread di rappresentazione chiama quindi la funzione
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [app desktop | App UWP] |
server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
piattaforma di destinazione | Finestre |
intestazione |
securitybaseapi.h (include Windows.h) |
libreria |
Advapi32.lib |
dll | Advapi32.dll |