Comment rechercher un utilisateur dans Active Directory?.NET: Comment rechercher un utilisateur dans Active Directory?
Quelques exemples de noms d'utilisateur sont:
- avatopia \ ian
- avatar \ ian
- [email protected]
- [email protected]
- avatopia.com \ ian
Il est important de noter que je ne connais pas le nom du domaine, and i shouldn't be hard-coding it.
Il y a quelques sample code on stack-overflow qui échoue.
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;
}
Il vérifie spécifiquement que vous n'avez pas réussi un nom d'utilisateur complet. par exemple.
Bad: avatopia\ian
Bad: avatar\ian
Good: ian
Good: ian
Parce que vous n'êtes pas autorisé à passer le domaine, il ne peut pas différencier entre les deux utilisateurs
ian
ian
Un autre gars a the same question sur sackoverflow, mais la réponse acceptée dit que vous devez
d'abord trouver le contexte de nommage pour le domaine requis
i don't know ce qu'est un "contexte de nommage", et je ne sais pas ce qu'est le "domaine requis". Je préfère vraiment ne pas écrire une expression régulière pour essayer d'analyser les noms d'utilisateur en noms de domaine et de compte, par ex.
domain.something\user-name
dans
domain.something
user-name
parce que je sais qu'il y aura certains cas, de bord que je vais mal. Je veux la méthode appropriée, prévue, de rechercher un utilisateur dans le répertoire actif.
Il y a une belle page sur CodeProject How to do almost everything in Active Directory, mais vous ne pouvez pas rechercher les informations d'un utilisateur par nom d'utilisateur
j'espère que je peux donner mon contrôleur de domaine (whoever it is, where ever it is, whatever it's called) un nom d'utilisateur, et ce sera de savoir quel domaine cet utilisateur appartient à, parler à ce contrôleur de domaine, et faire le travail.
Avez-vous du code qui divise 'ian @ avatopia.local' –
peut-être .. voir ci-dessus – inspite