2011-10-19 70 views
3

我想知道是否啓用用戶帳戶。我使用此代碼:C#啓用DirectoryEntry的用戶帳戶

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 namepsace,但我想知道爲什麼這個代碼不起作用。

回答

1

您正在使用WinNT://供應商,該供應商的能力非常有限。它不支持許多通用屬性,而且我認爲這可能是此代碼設置爲userAccountControl(這是LDAP屬性,很可能不存在並且不支持本地用戶)的原因帳戶)不起作用。

見理查德·穆勒的一個更多的信息在什麼WinNT://能做(或不能做)

+0

感謝您的文章WinNT vs. LDAP。這可能是原因。 – andDaviD

+0

謝謝,進一步回答。如果您在http://www.rlmueller.net/UserAttributes.htm上查看他的電子表格,「userAccountControl」僅在LDAP中不是WinNT。 – scottheckel