Для чтения данных AD я использую этот класс. Это настройка для нашей AD, но в основном вы можете просто передать все «поля», которые вы хотите найти, в параметрах.
Но вам нужно знать, какое поле содержит адрес электронной почты. Sysinternals сделал довольно хороший инструмент для просмотра AD, чтобы выяснить, что вы ищете, под названием ADExplorer.
Но я не понимаю, зачем тебе искать в AD? Разве вы не можете предположить, что пользователь уже прошел проверку подлинности, если он находится в сети, а затем полагаться на идентичность Windows?
public static Hashtable GetAttributes(string initials, params string[] Attribute)
{
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://ADNAME");
DirectorySearcher ADSearcher = new DirectorySearcher(directoryEntry);
ADSearcher.Filter = "(sAMAccountName=" + initials + ")";
foreach (string para in Attribute)
{
ADSearcher.PropertiesToLoad.Add(para);
}
SearchResult adSearchResult = ADSearcher.FindOne();
Hashtable hshReturns = new Hashtable();
foreach (string para in Attribute)
{
string strReturn = "";
if (adSearchResult.Properties[para].Count == 0)
strReturn = "";
else
strReturn = ((ResultPropertyValueCollection)adSearchResult.Properties[para])[0].ToString();
hshReturns.Add(para, strReturn);
}
return hshReturns;
}