Necesito para determinar si el programa se está ejecutando con privilegios completos de administrador. Por eso me refiero a que si uac está activado (para win vista/7) que necesito para determinar si el programa tiene derechos de administrador (como si el usuario de clic con el botón derecho y selecciona «ejecutar como administrador») y no limitado por la uac. ¿Cómo puedo hacer esto en C++?

InformationsquelleAutor David Chen | 2010-11-20

2 Comentarios

  1. 11

    Otras alternativas son: IsUserAnAdmin o AccessCheck

    La comprobación de la TOKEN_ELEVATION* cosas en el símbolo no es necesario para probar el actual proceso, pero es útil si usted necesita para saber si el usuario puede elevar porque tienen una división token etc.

  2. 0

    Una expansión de Anders » respuesta para aquellos (como yo) que son menos Windows analfabetos:

        BOOL isMember;
        PSID administratorsGroup = NULL;
        SID_IDENTIFIER_AUTHORITY SIDAuthNT =
            SECURITY_NT_AUTHORITY;
    
        if (!AllocateAndInitializeSid(&SIDAuthNT, 2,
            SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
            0, 0, 0, 0, 0, 0,
            &administratorsGroup))
        {
            throw(oops_t(GetLastError(), "AllocateAndInitializeSid"));
        }
    
        if (!CheckTokenMembership(nullptr, administratorsGroup, &isMember))
        {
            throw(oops_t(GetLastError(), "CheckTokenMembership"));
        }
    
        if (!isMember)
        {
            throw(oops_t(ERROR_ACCESS_DENIED, "Test for Admin privileges"));
        }

Dejar respuesta

Please enter your comment!
Please enter your name here