从Active Directory PrincipalContext获取所有用户

时间:2012-05-19 14:09:06

标签: c# active-directory

我使用以下代码访问AD中的用户列表,但是在我将用户添加到组合框的行中,我得到了一个空引用异常。

PrincipalContext AD = new PrincipalContext(ContextType.Domain, "mydomainip");
UserPrincipal u = new UserPrincipal(AD);
PrincipalSearcher search = new PrincipalSearcher(u);

foreach (UserPrincipal result in search.FindAll())
{
    if (result.DisplayName != null)
    {
        comboBox2.Items.Add(result.DisplayName);
    }
}

知道我做错了吗?

我用Console.WriteLine(result.DisplayName)替换了组合框,它工作正常。

1 个答案:

答案 0 :(得分:7)

不是100%确定是否存在问题 - 但PrincipalSearcher确实返回了Principal个对象的列表。

因此,如果 - 无论出于何种原因 - 您的搜索者会返回而不是 UserPrincipal的内容,那么您的对象result将为空 - 而不是.DisplayName属性。

因此,您应该将检查更改为:

foreach (UserPrincipal result in search.FindAll())
{
    if (result != null && result.DisplayName != null)
    {
        comboBox2.Items.Add(result.DisplayName);
    }
}