在Active Directory中搜索
1.SearchRoot
指定搜索从哪里开始,如当前节点等
DirectorySearcher search = new DirectorySearcher();
search.SearchRoot = de;
2.过滤器
过滤条件是用双引号引起来的括号中的内容如"(&(objectClass=user)(|(description=Auth*)(name=m*)))"
searcher.Filter="(&(objectClass=user)(|(description=Auth*)(name=m*)))"
3.搜索范围
search.SearchScope = SearchScope.Subtree;
取值如下:Subtree,Base(只搜索对象中的属性,至多可以得到一个对象),OneLevel(在基对象的子集中搜索,基对象不搜索)
4.加载的属性PropertiesToLoad
对象的很多属性都不太重要,此处定义了加载到缓存中的对象属性,若没有指定,默认是对象的Path和Name属性
search.PropertiesToLoad.Add("name");
search.PropertiesToLoad.Add("description");
search.PropertiesToLoad.Add("giveName");
search.PropertiesToLoad.Add("wWWWHomePage");
5.对结果进行排序,Sort函数有两个参数,第一个是要排序的字段,第二个为排序方式SortOption有两个值,Ascending和Descending
search.Sort = new SortOption("givenName",SortDirection.Ascending);
6.开始搜索,FindAll()查找返回一个SearchResultCollection,FindOne()返回一个简单的SearchResult对象
SearchResultCollection results = searcher.FindAll();
如下代码:
2 foreach( SearchResult result in resultCol )
3 {
4 ResultPropertyCollection props = result.Properties;
5 foreach( string propName in props.PropertyNames )
6 {
7 Console.Write(propName+":");
8 Console.WriteLine(props[propName][0]);
9 }
10 Console.WriteLine();
11 }