有时候我们需要查询一个Windows域中的一些如用户,用户组等对象,或者是针对某个组织单元下的所有用户等等,对这些对象的查询,.NET为我们提供了一些非常方便的类库。对于AD对象查询,我们通常使用System.DirectoryServices命名空间下的DirectorySearcher类进行查询,例如我们要查询在ORG_PGM组织单元下的所有用户和用户组,代码如下:
String ladpRootPath = "LDAP://192.168.213.168/OU=ORG_PGM,DC=pk1,DC=cctv,DC=com";
DirectoryEntry ladpRoot = new DirectoryEntry(ladpRootPath);
ladpRoot.Username = "XXXXX";
ladpRoot.Password = "XXXXX";
DirectorySearcher mySearcher = new DirectorySearcher(ladpRoot);
mySearcher.Filter = "(!(objectClass=group)(objectClass=user))";
SearchResultCollection srList = mySearcher.FindAll();
foreach (SearchResult item in srList)
{
DirectoryEntry obj= item.GetDirectoryEntry();
Console.WriteLine("Name:" + obj.Name );
Console.WriteLine("Type:" + obj.SchemaClassName);
}
srList.Dispose();
需要注意的是,此搜索方式不是搜索指定目录下的一级目录中的对象,而是搜索指定目录下的所有目录(包含当前目录和子目录)中的对象。DirectorySearcher类专门用来检索AD目录中的对象,检索条件通过Filter属性来确定,关于Filter属性的具体写法,详见 http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa746475(v=vs.85).aspx
本文介绍如何利用.NET框架中的DirectorySearcher类查询Windows域中的用户、用户组及特定组织单元下的所有对象。
759

被折叠的 条评论
为什么被折叠?



