2010-09-29 4 views
3

Как изменить пароль пользователя Active Directory с помощью службы каталогов, не зная старый пароль?Изменение пароля пользователя Active Directory

+1

C# или Java? * Обычно * люди выбирают один или другой для проекта. – Greg

+0

Я выбрал оба, потому что люди на обоих языках могут это сделать. В любом случае это логика, которую я хочу. Кодирование на обоих языках будет аналогичным. – Abhimanyu

+0

Я переделал тег 'language-agnostic' –

ответ

3

Возможно, вы ищете метод SetPassword, на который вы должны ссылаться на объект DirectoryEntry.

Проверьте пример «Сбросить пароль пользователя» здесь: Howto: (Almost) Everything In Active Directory via C#.

EDIT:
Если у вас возникли проблемы с въездной каталога становится нулевым, вы, вероятно, передавая неправильный путь. Путь должен быть чем-то вроде этого:

DirectoryEntry entry = new DirectoryEntry("LDAP://CN=johndoe,CN=Users,DC=acme,DC=com"); 
+0

Я использовал этот метод, но его не работал. Когда я получил результат поиска, он отображает нуль во время отладки. Но пользователь находится в AD – Abhimanyu

+0

@Abhimanyu: Решение Paolo должно быть верным. Можете ли вы объяснить, что вы имели в виду под «он показывает null», что является нулевым при отладке? Некоторый код того, что вы сейчас делаете, поможет. – Amry

+0

@Amry: после выполнения этой строки кода (DirectoryEntry uEntry = new DirectoryEntry (userDn);), я получаю ошибки в свойствах uEntry, а UserName отображается как null. – Abhimanyu

0

Как MCSE, я пароль сбрасывает много раз в день, так что я могу сказать вам кое-что об этом.

В основном две операции, которые вы можете выполнять с паролем Active Directory - изменение и сброс. Для изменения пароля требуется, чтобы вы знали текущий пароль в учетной записи, но сброс пароля не требует, чтобы вы знали текущий пароль в учетной записи, поэтому в целях изменения пароля пользователя, не зная пароля, вы действительно необходимо выполнить операцию сброса пароля в учетной записи.

Кстати, я считаю, что существуют два отдельных расширенных права Active Directory, которые контролируют каждое из этих разрешений, но я не знаком с ними, так как я являюсь делегированным администратором, который делегирован.

Итак, помните, что любые попытки сбросить пароль пользователя не удастся, если у вас нет права на сброс пароля, предоставленного вам в целевой учетной записи пользователя.

+0

На самом деле это не ответ на заданный вопрос. Имейте в виду, что это не сайт для администраторов - это для программистов. Ознакомьтесь с принятым ответом на некоторые подсказки о том, какой «правильный» ответ на этот вопрос был. Кроме того, ваши ссылки на этот сайт кажутся немного спаммированными; он не имеет абсолютно никакого отношения к кодированию. –

0

В .net 3.5 появилась новая библиотека под названием System.DirectoryServices.AccountManagement. Это упрощает управление пользователями.

public void ChangePassword(string dn, string newPassword) 
    { 
     using (var context = new PrincipalContext(ContextType.Domain)) 
     { 
      using (var user = UserPrincipal.FindByIdentity(context, IdentityType.DistinguishedName, dn)) 
      { 
       user.SetPassword(newPassword); 
      } 
     } 
    } 
Смежные вопросы