2012-02-24 11 views
6

Ho scritto del codice ma non funziona Getta Eccezione "Si è verificato un errore di funzionamento." codice --->Elimina utente nella directory attiva utilizzando C#

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

mi danno alcune idee per uscire da questo cose ..

+0

Stai cercando di rimuovere un membro da un gruppo, a quanto pare ...... quale dose del "percorso LDAP" si riferiscono a? L'account utente che stai tentando di eliminare? Qualche contenitore? –

+0

voi. Sto cercando di rimuovere un account utente da CN = User OU. ma non posso .. – soundy

+1

OK, che ** cosa è in ** il "Percorso LDAP" che stai usando lì ?? Hai 'CN = Utenti, DC = Yourcomapny, dc = com' in là ?? O il percorso LDAP dell'account utente effettivo ??? –

risposta

9

Se siete su .NET 3.5 e fino, si dovrebbe verificare la System.DirectoryServices.AccountManagement (S.DS .AM) spazio dei nomi. Leggi tutto su di esso qui:

In sostanza, è possibile definire un contesto di dominio e trovare facilmente gli utenti e/o gruppi in AD:

// 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(); 
} 

Il il nuovo S.DS.AM rende davvero facile giocare con utenti e gruppi in AD!

+2

@Ali: prova questo: 'user.Enabled = false; user.Save(); ' –

+0

@Ali scrivi una nuova domanda a riguardo – Kiquenet

+0

Poiché questi sono tutti IDisposable dovresti assicurarti di usare un blocco 'using' o .Dispose() –

0

Quando si utilizza già DirectoryEntry non è necessario PrincipalContext o UserPrincipal.

si può semplicemente utilizzare il metodo DeleteTree():

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