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.