2012-02-24 37 views
6

He escrito un código pero no funciona arroja la excepción "Se produjo un error de operaciones". código --->Eliminar usuario en el directorio activo usando C#

DirectoryEntry dirEntry = new DirectoryEntry("LDAP path", "admin-username", "admin-password"); 
dirEntry.Properties["member"].Remove("username-delete"); 
dirEntry.CommitChanges(); 
dirEntry.Close(); 

me dan algunas ideas para salir de esta cosas ..

+0

Usted está tratando de eliminar un miembro de un grupo, parece ...... qué dosis de la "ruta LDAP" se refieren a? ¿La cuenta de usuario que intentas eliminar? ¿Algún contenedor? –

+0

ye. Estoy tratando de eliminar una cuenta de usuario de CN = Unidad organizativa de usuarios. pero no puedo ... – soundy

+1

OK, ¿** qué está en ** la "Ruta LDAP" que está utilizando allí? ¿Tiene 'CN = Usuarios, DC = Yourcomapny, dc = com' ahí? ¿O la ruta de LDAP de la cuenta de usuario real? –

Respuesta

9

Si estás en .NET 3.5 y arriba, que debe salir el System.DirectoryServices.AccountManagement (S.DS .AM) espacio de nombres. Leer todos los detalles aquí:

Básicamente, se puede definir un contexto de dominio y encontrar fácilmente los usuarios y/o grupos en el año:

// set up domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// find the user you want to delete 
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName"); 

if(user != null) 
{ 
    user.Delete(); 
} 

El ¡El nuevo S.DS.AM hace que sea muy fácil jugar con usuarios y grupos en AD!

+2

@Ali: intente esto:' user.Enabled = false; user.Save(); ' –

+0

@Ali escribe una nueva pregunta al respecto – Kiquenet

+0

Dado que todos estos son IDisposables, debes asegurarte de usar un bloque 'using' o .Dispose() –

0

Cuando ya está utilizando un DirectoryEntry no hay necesidad de PrincipalContext o UserPrincipal.

puede simplemente usar el método DeleteTree():

DirectoryEntry dirEntry = new DirectoryEntry("LDAP path", "admin-username", "admin-password"); 
dirEntry.DeleteTree(); 
Cuestiones relacionadas