首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确定用户帐户是启用还是禁用

如何确定用户帐户是启用还是禁用
EN

Stack Overflow用户
提问于 2010-01-05 19:21:58
回答 5查看 86.5K关注 0票数 74

我扔了一个快速的C# win表单应用程序,以帮助解决重复的文书工作。

我已经在AD中搜索了所有用户帐户,并将它们添加到带有复选框的列表视图中。

我想默认listviewitems的默认检查状态取决于帐户的启用/禁用状态。

代码语言:javascript
复制
string path = "LDAP://dc=example,dc=local";
DirectoryEntry directoryRoot = new DirectoryEntry(path);
DirectorySearcher searcher = new DirectorySearcher(directoryRoot,
    "(&(objectClass=User)(objectCategory=Person))");
SearchResultCollection results = searcher.FindAll();
foreach (SearchResult result in results)
{
    DirectoryEntry de = result.GetDirectoryEntry();
    ListViewItem lvi = new ListViewItem(
        (string)de.Properties["SAMAccountName"][0]);
    // lvi.Checked = (bool) de.Properties["AccountEnabled"]
    lvwUsers.Items.Add(lvi);
}

我正在努力寻找正确的属性来解析,以便从DirectoryEntry对象中获取帐户的状态。我搜索了AD User attributes,但没有找到任何有用的东西。

有没有人能给我点建议?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-05 19:29:29

这里的代码应该可以工作...

代码语言:javascript
复制
private bool IsActive(DirectoryEntry de)
{
  if (de.NativeGuid == null) return false;

  int flags = (int)de.Properties["userAccountControl"].Value;

  return !Convert.ToBoolean(flags & 0x0002);
}
票数 132
EN

Stack Overflow用户

发布于 2016-02-17 14:13:37

使用用户名: domainName和System.DirectoryServices.AccountManagement必须是域和用户名的字符串值。

代码语言:javascript
复制
using (var domainContext = new PrincipalContext(ContextType.Domain, domainName))
{
    using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, username)) 
    {
        if (foundUser.Enabled.HasValue) 
        {
            return (bool)foundUser.Enabled;
        }
        else
        {
            return true; //or false depending what result you want in the case of Enabled being NULL
        }
    }
}
票数 14
EN

Stack Overflow用户

发布于 2013-12-11 04:55:26

没有人问,但这里有一个java版本(因为我最终在这里寻找一个)。空值检查留给读者作为练习。

代码语言:javascript
复制
private Boolean isActive(SearchResult searchResult) {
    Attribute userAccountControlAttr = searchResult.getAttributes().get("UserAccountControl");
    Integer userAccountControlInt = new Integer((String) userAccoutControlAttr.get());
    Boolean disabled = BooleanUtils.toBooleanObject(userAccountControlInt & 0x0002);
    return !disabled;
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2005637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档