从Active Directory组获取用户

时间:2011-07-06 22:26:31

标签: c# active-directory directoryentry

我一直在敲打几个小时试图弄清楚为什么这不起作用。我找到了从AD组获取用户列表的示例,但我无法让它工作。这是我一直在努力做的事情:

DirectoryEntry de = new DirectoryEntry("LDAP://DC=" + domain + ",DC=com");

DirectorySearcher ds = new DirectorySearcher(de);//, "(objectClass=person)");

ds.Filter = "(&(objectCategory=person)(objectclass=user)(memberOf=CN=!CityNameGroup))"; 

ds.PropertiesToLoad.Add("givenname");
ds.PropertiesToLoad.Add("samaccountname");
ds.PropertiesToLoad.Add("sn");
ds.PropertiesToLoad.Add("useraccountcontrol");

foreach (SearchResult sr in ds.FindAll())
{//stuff goes here}

但是ds.FindAll总是会使用此过滤器返回0结果。我可以做更简单的过滤器来带回结果,但我从来没有从上面的过滤器中得到任何回报。我只想要所有在!CityNameGroup中的用户。我很感激帮助!

1 个答案:

答案 0 :(得分:3)

如果.NET 3.5是一个选项,请停止敲打你的头并看看:

Everything in Active Directory via C#.NET 3.5 (Using System.DirectoryServices.AccountManagement)

说真的,.NET 3.5中的AD处理是另一个世界。它会改变一切。当然,为了更好。

<强>更新

此外,这里有一个现成的答案(Active Directory User Group Memberships GroupPrincipal)。我会体会到不复制它。 :)

它使用.NET 3.5,BTW。