Windows Win32Segurança & tokensadvapi32.dll
AdjustTokenPrivileges
Habilita ou desabilita privilégios específicos em um token de acesso.
Descrição
Diferente das capabilities do Linux (concedidas na criação do processo ou via arquivo executável), privilégios do Windows são atribuídos ao token na criação da sessão de login mas ficam desabilitados por padrão — é preciso habilitá-los explicitamente antes de usá-los (ex.: SeDebugPrivilege antes de abrir processos protegidos).
Header:
securitybaseapi.hDLL: advapi32.dllNative API: NtAdjustPrivilegesTokenAtenção
Retornar sucesso não garante que todos os privilégios pedidos foram concedidos — é preciso checar GetLastError separadamente para ERROR_NOT_ALL_ASSIGNED.
Assinatura
BOOL AdjustTokenPrivileges(
HANDLE TokenHandle,
BOOL DisableAllPrivileges,
PTOKEN_PRIVILEGES NewState,
DWORD BufferLength,
PTOKEN_PRIVILEGES PreviousState,
PDWORD ReturnLength
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| TokenHandle | HANDLE | Handle do token, aberto com TOKEN_ADJUST_PRIVILEGES. |
| DisableAllPrivileges | BOOL | Se TRUE, desabilita todos os privilégios (ignorando NewState). |
| NewState | PTOKEN_PRIVILEGES | Lista de privilégios a habilitar/desabilitar. |
| BufferLength | DWORD | Tamanho do buffer de estado anterior, se solicitado. |
| PreviousState | PTOKEN_PRIVILEGES | Se não for NULL, recebe o estado anterior dos privilégios ajustados. |
| ReturnLength | PDWORD | Recebe o tamanho real de `PreviousState`. |
Valor de retorno
Diferente de zero em sucesso — inclusive quando nem todos os privilégios pedidos foram concedidos (checar GetLastError == ERROR_NOT_ALL_ASSIGNED); 0 em erro real.
Códigos de erro (GetLastError)
- ERROR_NOT_ALL_ASSIGNED(1300)
- Nem todos os privilégios ou grupos referenciados foram atribuídos ao chamador.
- ERROR_ACCESS_DENIED(5)
- Acesso negado.
Relacionadas
Equivalente em Linux x86_64