Что Вы ищете для пользователей в Active Directory?.NET: Как найти пользователя в Active Directory?
Некоторые примеры являются имена пользователей:
- avatopia \ Иэн
- аватар \ Иэн
- [email protected]
- [email protected]
- avatopia.com \ Яну
Важно отметить, что я не знаю названия домена, and i shouldn't be hard-coding it.
Существует некий sample code on stack-overflow, который терпит неудачу.
using System.DirectoryServices;
/// <summary>
/// Gets the email address, if defined, of a user from Active Directory.
/// </summary>
/// <param name="userid">The userid of the user in question. Make
/// sure the domain has been stripped first!</param>
/// <returns>A string containing the user's email address, or null
/// if one was not defined or found.</returns>
public static string GetEmail(string userid)
{
DirectorySearcher searcher;
SearchResult result;
string email;
// Check first if there is a slash in the userid
// If there is, domain has not been stripped
if (!userid.Contains("\\"))
{
searcher = new DirectorySearcher();
searcher.Filter = String.Format("(SAMAccountName={0})", userid);
searcher.PropertiesToLoad.Add("mail");
result = searcher.FindOne();
if (result != null)
{
email = result.Properties["mail"][0].ToString();
}
}
return email;
}
Он специально гарантирует, что вы не прошли полное имя пользователя. например
Bad: avatopia\ian
Bad: avatar\ian
Good: ian
Good: ian
Потому что вы не можете передать домен, он не может различать между двумя пользователями
ian
ian
Другой парень the same question на sackoverflow, но принятый ответ говорит, что вы должны
первым найти контекст именования нужный домен
i don't know Что такое «контекст именования», и я не знаю, что такое «требуемый домен». я бы предпочел не писать регулярное выражение, чтобы попытаться проанализировать имена пользователей в именах доменов и именах учетных записей, например.
domain.something\user-name
в
domain.something
user-name
, потому что я знаю, что будет какой-то крайний случай, что я буду ошибиться. Я хочу, чтобы правильный, предназначенный, способ поиска пользователя в активном каталоге.
Там хорошая страница на CodeProject How to do almost everything in Active Directory, но вы не можете поиск информации пользователя по имени пользователя
я надеюсь, что я могу дать контроллер домена (whoever it is, where ever it is, whatever it's called) имя пользователя, и он будет выяснить, какой домен к которому принадлежит пользователь, поговорить с этим контроллером домена и выполнить эту работу.
У вас есть код, который разбивает `ian @ avatopia.local` – 2008-11-27 20:31:16