2012-02-24 4 views
6

Я написал код, но не работает, он выбрасывает исключение «Произошла операционная ошибка». код --->Удалить пользователя в активном каталоге с помощью C#

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

дать мне некоторые идеи, чтобы выйти из этой вещи ..

+0

Вы пытаетесь удалить участника из группы, он кажется ...... то, что дозировать «путь LDAP» относится? Учетную запись пользователя, которую вы пытаетесь удалить? Какой-то контейнер? –

+0

вы. Я пытаюсь удалить учетную запись пользователя из CN = Users OU. но я не могу .. – soundy

+1

Хорошо, что ** что находится в ** «Путь LDAP», который вы там используете? У вас есть 'CN = Пользователи, DC = Yourcomapny, dc = com' там? Или путь LDAP фактической учетной записи пользователя? –

ответ

9

Если вы на .NET 3.5 и выше, вы должны проверить System.DirectoryServices.AccountManagement (S.DS .AM). Читайте об этом здесь:

В принципе, вы можете определить контекст домена и легко найти пользователей и/или групп в 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(); 
} 

новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD!

+2

@Ali: попробуйте следующее:' user.Enabled = false; user.Save(); ' –

+0

@Ali напишите новый вопрос об этом – Kiquenet

+0

Поскольку все они IDisposable, вы должны убедиться, что используете блок 'using' или .Dispose() –

0

Когда вы уже используете DirectoryEntry, нет необходимости в PrincipalContext или UserPrincipal.

Вы можете просто использовать DeleteTree() метод:

DirectoryEntry dirEntry = new DirectoryEntry("LDAP path", "admin-username", "admin-password"); 
dirEntry.DeleteTree(); 
Смежные вопросы