Êtes-vous sur .NET 3.5? Si c'est le cas - AD a de nouvelles fonctionnalités dans .NET 3.5 - consultez cet article Managing Directory Security Principals in .NET 3.5 par Ethan Wilanski et Joe Kaplan.
L'une des grandes nouveautés est une classe "PrincipalSearcher" qui devrait grandement simplifier la recherche d'utilisateurs et/ou de groupes dans AD.
Si vous ne pouvez pas utiliser .NET 3.5, utilisez un DirectorySearcher et indiquez l'adresse e-mail à vos critères de recherche, et de récupérer le nom d'utilisateur (lequel Il y a un noms d'utilisateur gazillion différents?!):
DirectoryEntry deRoot = new DirectoryEntry("LDAP://cn=Users,dc=yourdomain,dc=com");
DirectorySearcher deSrch = new DirectorySearcher(deRoot);
deSrch.SearchScope = SearchScope.Subtree;
deSrch.PropertiesToLoad.Add("sn"); // surname = family name
deSrch.PropertiesToLoad.Add("givenName");
deSrch.PropertiesToLoad.Add("samAccountName");
deSrch.Filter = string.Format("(&(objectCategory=person)(mail={0}))", emailAddress);
foreach(SearchResult sr in deSrch.FindAll())
{
// you can access the properties of the search result
if(sr.Properties["sn"] != null)
{
string surname = sr.Properties["sn"][0].ToString();
}
// and so on, for all the other properties, too
}
Espérons que cela aide!
Marc