Pergunta

pergunta anterior perguntei como superar o fato de que em certos usuários os privilégios de depuração não estavam lá. Agora, já que não pode definir algo que não existe, como eu ia verificar se um usuário tem privilégios de depuração?

Eu sei que eu tenho que usar LookupPrivilegeValue (), eu simplesmente não consigo descobrir onde ler no valor retornado que indica se um privilégio particular é lá ou não.

Código é apreciado.

Graças

Foi útil?

Solução

A partir http://msdn.microsoft. com / en-us / library / aa446619% 28VS.85% 29.aspx

BOOL SetPrivilege(
    HANDLE hToken,          // access token handle
    LPCTSTR lpszPrivilege,  // name of privilege to enable/disable
    BOOL bEnablePrivilege   // to enable or disable privilege
    ) 
{
    TOKEN_PRIVILEGES tp;
    LUID luid;

    if ( !LookupPrivilegeValue( 
            NULL,            // lookup privilege on local system
            lpszPrivilege,   // privilege to lookup 
            &luid ) )        // receives LUID of privilege
    {
        printf("LookupPrivilegeValue error: %u\n", GetLastError() ); 
        return FALSE; 
    }

    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    if (bEnablePrivilege)
        tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    else
        tp.Privileges[0].Attributes = 0;

    // Enable the privilege or disable all privileges.

    if ( !AdjustTokenPrivileges(
           hToken, 
           FALSE, 
           &tp, 
           sizeof(TOKEN_PRIVILEGES), 
           (PTOKEN_PRIVILEGES) NULL, 
           (PDWORD) NULL) )
    { 
          printf("AdjustTokenPrivileges error: %u\n", GetLastError() ); 
          return FALSE; 
    } 

    if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)

    {
          printf("The token does not have the specified privilege. \n");
          return FALSE;
    } 

    return TRUE;
}

Se a função retornar ERROR_NOT_ALL_ASSIGNED ao solicitar para definir os privilégios de depuração, em seguida, o token não existe.

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