Вы на .NET 3.5? Если это так - AD имеет замечательные новые функции в .NET 3.5 - ознакомьтесь с этой статьей Управление принципами безопасности каталогов в .NET 3.5 от Этана Вилански и Джо Каплана.
Одной из больших новых функций является класс "PrincipalSearcher", который должен значительно упростить поиск пользователей и / или групп в AD.
Если вы не можете использовать .NET 3.5, используйте DirectorySearcher и укажите адрес электронной почты в качестве критерия поиска, а затем извлеките имя пользователя (какое? У вас есть разные имена пользователей!):
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
}
Надеюсь, это поможет!
Марк