2010-12-15 10 views

Respuesta

41

Usted puede hacer algo en la línea de (en sustitución de dominio con el dominio que se autentica en la eliminación o el parámetro en total):

public bool DoesUserExist(string userName) 
{ 
    using (var domainContext = new PrincipalContext(ContextType.Domain, "DOMAIN")) 
    { 
     using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName)) 
     { 
      return foundUser != null; 
     } 
    } 
} 

Para lograr la comprobación de si existe un usuario. Esto proviene del espacio de nombres y ensamblaje System.DirectoryServices.AccountManagement.

Puede encontrar más información en http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.aspx

Es posible que desee comprobar en más PrincipalContext ya que cuenta con métodos interesantes para autenticar las credenciales de usuario y tal.

+2

1 Lo que yo haría, sólo que mejor explicó. Además, puede omitir el nombre de doamin para usar el dominio local, lo cual es útil si solo tiene un dominio y no necesita saber su nombre. – Grhm

+0

Gracias ayudó .. el nuevo espacio de nombres System.DirectoryServices.AccountManagement ayudó .. !! Bueno, estoy un poco confised en el segundo parámetro "DOMAIN" ..? ¿Debemos darlo o no si le damos el nombre de dominio de Active Directory? ... – msbyuva

+0

Puede eliminar ese parámetro si desea conectarse al dominio predeterminado del sistema. De lo contrario, deberá especificar el dominio al que desea conectarse. –

7

Usaría el espacio de nombre System.DirectoryServices.AccountManagement.

string UserID = "grhm"; 
bool userExists = false; 

using (var ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    using (var user = UserPrincipal.FindByIdentity(ctx, UserID)) 
    { 
     if (user != null) 
     { 
      userExists = true; 
      user.Dispose(); 
     } 
    } 
} 

Ver http://msdn.microsoft.com/en-us/library/bb344891.aspx para obtener más información

+0

Gracias funcionó, sí, el nuevo espacio de nombres. System.DirectoryServices.AccountManagment muy fácil ... – msbyuva

+0

Veo en algunos ejemplos que hay otro parámetro "DOMAIN" para el PrincipleContext ... ¿Tenemos que usarlo o no? ... – msbyuva

+0

Puede usar otros parámetros para especificar el dominio con el que desea contestar, como en la otra respuesta. Veo que Joshua ha explicado esto anteriormente ... – Grhm

Cuestiones relacionadas