C#使用DirectoryEntry启用用户帐户
我想知道是否启用了用户帐户。 我用这个代码:
var usersList = new List(); 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
出现了一个错误member.Properties["userAccountControl"].Value
。 我知道使用System.DirectoryServices.AccountManagement namepsace,但我想知道为什么这段代码不起作用。
您使用的是WinNT://
提供程序,其function非常有限。 它不支持完整的LDAP://
提供程序具有的许多常用属性 – 我认为这可能是此代码设置userAccountControl
(这是一个LDAP属性,很可能不存在且不支持的原因)本地用户帐户)不起作用。
有关WinNT://
可以做什么(或不能做)的更多信息,请参阅Richard Mueller的文章WinNT vs. LDAP
- Active Directory嵌套组
- 我何时需要域名和域容器来创建PrincipalContext?
- ASP.NET Core通过web.config授权AD组
- 检查Active Directory帐户是否已锁定(WPF C#)
- 如何在Powershell中模拟Active Directory用户?
- WCF服务中的System.DirectoryServices.AccountManagement.PrincipalContext和Impersonation
- 使用PrincipalContext.ValidateCredentials对本地计算机进行身份validation时出错?
- 从WindowsIdentity和Thread.CurrentPrincipal检索WindowsPrincipal有什么区别?
- Active Directory中联机的计算机列表