我想知道是否启用了用户帐户。我使用以下代码:

  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名称空间,但是我想知道为什么此代码不起作用。

最佳答案

您正在使用WinNT://提供程序,它的功能非常有限。它不支持成熟的LDAP://提供程序具有的许多常用属性-我想这可能是此代码设置userAccountControl(这是LDAP属性,很可能不存在并且不支持)的原因。在本地用户帐户上)无效。

有关WinNT://可以做什么(或不能做什么)的更多信息,请参阅Richard Mueller的文章WinNT vs. LDAP

10-06 12:07