我一直在敲打几个小时试图弄清楚为什么这不起作用。我找到了从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中的用户。我很感激帮助!
答案 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。