2012-02-24 15 views
6

Napisałem kod, ale nie działa ono wyrzuca Wyjątek "Wystąpił błąd operacji." Kod --->Usuń użytkownika w aktywnym katalogu przy użyciu C#

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

dać mi jakieś pomysły, aby wydostać się z tej rzeczy ..

+0

Próbujesz usunąć członka z grupy, wydaje ...... co dozować „ścieżki LDAP” odnoszą się do? Konto użytkownika, które próbujesz usunąć? Jakiś pojemnik? –

+0

ye. Próbuję usunąć konto użytkownika z jednostki organizacyjnej CN = Users. ale nie mogę .. – soundy

+1

OK, to ** co jest w ** "ścieżce LDAP", której używasz? Czy masz w nim 'CN = Users, DC = Yourcomapny, dc = com'? Lub faktyczna ścieżka LDAP konta użytkownika ??? –

Odpowiedz

9

Jeśli jesteś na .NET 3.5 iw górę, należy zapoznać się z System.DirectoryServices.AccountManagement (S.DS .AM) przestrzeń nazw. Przeczytać o tym tutaj:

Zasadniczo, można określić kontekst domeny i łatwo znaleźć użytkowników i/lub grupy w 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(); 
} 

nowy S.DS.AM ułatwia zabawę z użytkownikami i grupami w AD!

+2

@Ali: spróbuj tego: 'user.Enabled = false; user.Save(); ' –

+0

@Ali napisz nowe pytanie na ten temat – Kiquenet

+0

Ponieważ wszystkie są IDisposable powinieneś upewnić się, że używasz bloku 'use' lub .Dispose() –

0

Gdy już używasz wpisu DirectoryEntry, nie ma potrzeby stosowania PrincipalContext lub UserPrincipal.

można po prostu użyć metody DeleteTree():

DirectoryEntry dirEntry = new DirectoryEntry("LDAP path", "admin-username", "admin-password"); 
dirEntry.DeleteTree(); 
Powiązane problemy