Hace ya un montón de tiempo (en septiembre de 2004), escribí un post, creo que interesante, sobre cómo obtener los roles a los que pertenecía un usuario de Windows.

El caso es que entonces la única manera de conseguirlo era mediante reflexión saltarse las normas de acceso a miembros para llamar a un método interno de la clase WindowsIdentity que devolvía esa información. El caso es que desde entonces no lo había vuelto a revisar (ni falta que me hizo), pero hoy uno de los alumnos de nuestro curso 70-536 de fundamentos de desarrollo en .NET para certificación, me ha hecho notar que en -NEt 2.0 y superiores ya no funciona, y además me ha sugerido la forma de hacerlo con las nuevas versiones (muchas gracias Miguel Ángel, vero que el curso te está cundiendo mucho, jeje), que sería así:

        private static string[] ListaDeRolesNET2(WindowsIdentity wId)
        {
        List<string> roles = new List<string>();
        
        foreach (IdentityReference idGrupo in wId.Groups)
        roles.Add(idGrupo.Translate(typeof(NTAccount)).Value);
        
        return roles.ToArray();
        }

Ahora está plenamente soportado por la plataforma, ofreciéndose una colección Groups que permite obtener los roles/grupos a los que pertenece un usuario en el equipo local o en un Directorio Activo.

Muy interesante. Espero que os sirva.

Escrito por un humano, no por una IA