Windows Win32Segurança & tokensadvapi32.dll
DuplicateTokenEx
Duplica um token de acesso, opcionalmente mudando seu tipo (primário ou de impersonation) e nível de impersonation.
Descrição
Passo comum ao implementar 'rodar como outro usuário': duplicar o token de um LogonUserW e usá-lo para CreateProcessAsUserW ou ImpersonateLoggedOnUser.
Header:
securitybaseapi.hDLL: advapi32.dllNative API: NtDuplicateTokenAssinatura
BOOL DuplicateTokenEx(
HANDLE hExistingToken,
DWORD dwDesiredAccess,
LPSECURITY_ATTRIBUTES lpTokenAttributes,
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
TOKEN_TYPE TokenType,
PHANDLE phNewToken
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| hExistingToken | HANDLE | Token de origem. |
| dwDesiredAccess | DWORD | Direitos de acesso do novo token. |
| lpTokenAttributes | LPSECURITY_ATTRIBUTES | Atributos de segurança, ou NULL. |
| ImpersonationLevel | SECURITY_IMPERSONATION_LEVEL | SecurityAnonymous, SecurityIdentification, SecurityImpersonation, SecurityDelegation. |
| TokenType | TOKEN_TYPE | TokenPrimary ou TokenImpersonation. |
| phNewToken | PHANDLE | Recebe o handle do novo token. |
Valor de retorno
Diferente de zero em sucesso; 0 em erro (consulte GetLastError).
Códigos de erro (GetLastError)
- ERROR_ACCESS_DENIED(5)
- Acesso negado.
- ERROR_INVALID_PARAMETER(87)
- Parâmetro incorreto.