Función DuplicateTokenEx (securitybaseapi.h)
La función
Sintaxis
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
);
Parámetros
[in] hExistingToken
Identificador de un token de acceso abierto con acceso TOKEN_DUPLICATE.
[in] dwDesiredAccess
Especifica los derechos de acceso solicitados para el nuevo token. La función DuplicateTokenEx compara los derechos de acceso solicitados con el lista de control de acceso discrecional del token existente (DACL) para determinar qué derechos se conceden o deniegan. Para solicitar los mismos derechos de acceso que el token existente, especifique cero. Para solicitar todos los derechos de acceso válidos para el autor de la llamada, especifique MAXIMUM_ALLOWED.
Para obtener una lista de los derechos de acceso para los tokens de acceso, consulte Derechos de acceso para Access-Token Objects.
[in, optional] lpTokenAttributes
Puntero a una estructura de SECURITY_ATTRIBUTES que especifica un descriptor de seguridad para el nuevo token y determina si los procesos secundarios pueden heredar el token. Si lpTokenAttributes es NULL, el token obtiene un descriptor de seguridad predeterminado y el identificador no se puede heredar. Si el descriptor de seguridad contiene un lista de control de acceso del sistema (SACL), el token obtiene ACCESS_SYSTEM_SECURITY derecho de acceso, incluso si no se solicitó en dwDesiredAccess.
Para establecer el propietario en el descriptor de seguridad del nuevo token, el token de proceso del autor de la llamada debe tener establecido el privilegio SE_RESTORE_NAME.
[in] ImpersonationLevel
Especifica un valor de la enumeración SECURITY_IMPERSONATION_LEVEL que indica el nivel de suplantación del nuevo token.
[in] TokenType
Especifica uno de los siguientes valores de la enumeración TOKEN_TYPE.
Valor | Significado |
---|---|
|
El nuevo token es un token principal |
|
El nuevo token es un token de suplantación. |
[out] phNewToken
Puntero a una variable HANDLE que recibe el nuevo token.
Cuando haya terminado de usar el nuevo token, llame a la función CloseHandle para cerrar el identificador del token.
Valor devuelto
Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.
Si se produce un error en la función, devuelve cero. Para obtener información de error extendida, llame a GetLastError.
Observaciones
La función
A continuación se muestra un escenario típico para usar DuplicateTokenEx para crear un token principal de . Una aplicación de servidor crea un subproceso que llama a una de las funciones de suplantación, como ImpersonateNamedPipeClient, para suplantar a un cliente. A continuación, el subproceso de suplantación llama a la función
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows XP [aplicaciones de escritorio | Aplicaciones para UWP] |
servidor mínimo admitido | Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP] |
de la plataforma de destino de |
Windows |
encabezado de |
securitybaseapi.h (incluya Windows.h) |
biblioteca de |
Advapi32.lib |
DLL de |
Advapi32.dll |