我想知道是否启用了用户帐户。我使用以下代码:
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。