在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();
  
  如下代码:

1  SearchResultCollection resultCol = 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  }