Pergunta

Eu estou usando o seguinte código (que é uma amostra do MSDN ligeiramente modificada) para verificar se eu tenho privilégios de depuração em um processo. Se eu não posso tentar defini-las.

int SetDebugPriv()
{
    HANDLE TokenHandle;
    LUID lpLuid;
    TOKEN_PRIVILEGES NewState;

    if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle))
    {
        //failed
        return 0;
    }

    if(!LookupPrivilegeValue(NULL, "SeDebugPrivilege" , &lpLuid))
    {
        //failed
        CloseHandle(TokenHandle);
        return 0;
    }

    NewState.PrivilegeCount = 1;
    NewState.Privileges[0].Luid = lpLuid;
    NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    if(!AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, sizeof(NewState), NULL, NULL))
    {
        //failed
        CloseHandle(TokenHandle);
        return 0;
    }

    CloseHandle(TokenHandle);
    return 1;
}

Agora, sob determinada conta no Windows XP e 2003 eu estou recebendo um erro acesso negado ao tentar definir o token. Meu palpite é que eu não posso definir que específica simbólico, porque eu não tenho permissão para fazer isso. Como é que eu definir a depuração token contas de administrador não ou conta com privilégios baixos?

código é apreciado.

graças

Foi útil?

Solução

Você não pode. Se você pudesse, seria uma falha de segurança enorme (SeDebugPrivilege tem mais mojo de Administrador).

AdjustTokenPrivileges voltas sobre um privilégio que o token tem, mas que não está habilitado. Por exemplo, SeShutdownPrivilege é uma delas.

Você tem que adicionar o privilégio à conta de usuário, em seguida, o usuário tem que sair e voltar novamente (para obter um novo token com o privilégio).

Para adicionar os privilégios para a conta de usuário por meio de programação, começar com este: http://support.microsoft. com / kb / 132958

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top