Разблокировка учетной записи пользователя - PullRequest
3 голосов
/ 09 августа 2011

Я пытаюсь установить свойства, чтобы разблокировать учетные записи пользователей в AD, и я использую следующий код;проблема в том, что de не содержит userAccountControl, и код завершается ошибкой.

Я могу получить значение userAccountControl с помощью DirectorySearcher, но это не помогает мне установить свойство с помощью de.Может ли кто-нибудь помочь мне?Заранее спасибо

String m_Path = "LDAP://" + distinguishedName;

using (DirectoryEntry de = new DirectoryEntry(m_Path))
{
   if (de.Contains("userAccountControl")
   {
      int m_Val  = (int)de.Properties["userAccountControl"][0].Value;
      de.Properties["userAccountControl"].Value = m_Val | 0x0001
      de.CommitChanges;
   }
}

1 Ответ

5 голосов
/ 09 августа 2011

Я думаю, вам нужно проверить, содержит ли de.Properties значение userAccountControl!

string ldapPath = "LDAP://" + distinguishedName;

using(DirectoryEntry de = new DirectoryEntry(ldapPath))
{
   // check to see if we have "userAccountControl" in the **properties** of de
   if(de.Properties.Contains("userAccountControl")
   {
      int m_Val  = (int)de.Properties["userAccountControl"][0].Value ;
      de.Properties["userAccountControl"].Value = m_Val | 0x0001;

      de.CommitChanges();
   }
}

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

По сути, вы можете определить контекст домена и легко находить и управлять пользователями и / или группами в AD:

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

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   // unlock user
   user.UnlockAccount();
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...