¿Cómo se busca un usuario en Active Directory?.NET: ¿Cómo buscar un usuario en Active Directory?
Algunos nombres de usuario de ejemplo son:
- avatopia \ Ian
- avatar \ Ian
- [email protected]
- [email protected]
- avatopia.com \ Ian
Es importante tener en cuenta que no sé el nombre del dominio, and i shouldn't be hard-coding it.
Hay algunos sample code on stack-overflow que fallan.
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;
}
Asegura específicamente que no haya pasado un nombre de usuario completo. p.ej.
Bad: avatopia\ian
Bad: avatar\ian
Good: ian
Good: ian
Debido a que no se le permite pasar del dominio, no puede diferenciar entre los dos usuarios
ian
ian
Otro tipo tiene the same question en sackoverflow, pero la respuesta aceptada dice que usted debe
primero localice el contexto de nomenclatura para el dominio requerido
i don't know qué es un "contexto de denominación", y no sé qué es el "dominio requerido". Realmente preferiría no escribir una expresión regular para tratar de analizar los nombres de usuario en nombres de dominio y cuentas, por ej.
domain.something\user-name
en
domain.something
user-name
porque sé que habrá algún caso extremo de que voy a conseguir equivocado. Quiero el método adecuado y pretendido para buscar a un usuario en el directorio activo.
Hay una buena página en CodeProject How to do almost everything in Active Directory, pero no se puede buscar información de un usuario por nombre de usuario
espero que yo pueda dar mi controlador de dominio (whoever it is, where ever it is, whatever it's called) un nombre de usuario, y se darán cuenta de qué dominio ese usuario pertenece, hable con ese controlador de dominio y realice el trabajo.
Tiene un código que se divide 'ian @ avatopia.local' –
quizás .. vea arriba – inspite