C # включить учетную запись пользователя с DirectoryEntry - PullRequest
3 голосов
/ 19 октября 2011

Я хочу знать, включена ли учетная запись пользователя. Я использую этот код:

  var usersList = new List<DirectoryEntry>();
  DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + computerName + ",Computer", Settings.UserName,Settings.UserPassword);

  DirectoryEntry admGroup = localMachine.Children.Find(Settings.AdministratorsGroup, "group");

   object members = admGroup.Invoke("members", null);

   foreach (object groupMember in (IEnumerable)members)
   {
        DirectoryEntry member = new DirectoryEntry(groupMember);
        var b =  member.Properties["userAccountControl"].Value; // <---- value == null
        usersList.Add(member);
   }

Я правильно понимаю всех участников.
Но ошибка появляется в member.Properties["userAccountControl"].Value. Я знаю об использовании пространства имен System.DirectoryServices.AccountManagement, но я хочу знать, почему этот код не работает.

1 Ответ

1 голос
/ 20 октября 2011

Вы используете провайдера WinNT://, возможности которого весьма ограничены. Он не поддерживает многие обычные свойства, которыми обладает полноценный провайдер LDAP:// - и я думаю, что, вероятно, именно поэтому этот параметр кода userAccountControl (который является атрибутом LDAP, скорее всего, отсутствует и не поддерживается). в локальной учетной записи пользователя) не работает.

См. Статью Ричарда Мюллера WinNT против LDAP , чтобы получить гораздо больше информации о том, что WinNT:// может делать (или не может)

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