搜索目录

最常见的目录任务就是搜索。尽管 DirectoryEntry 对象可用于简单搜索,例如查找执行简单操作(例如绑定到域)所需的单个目录对象,但它无法执行复杂搜索或返回大结果集。

要向您的应用程序添加功能强大的搜索操作,请使用 DirectorySearcher 对象。DirectorySearcher 对象提供一组属性和方法,使您能够选择多个搜索条件,例如搜索范围、筛选器、通配符字符串、结果集的页大小和排序。

本节包括以下主题:

在执行搜索前,必须先对 DirectorySearcher 对象和目录搜索概念有所了解。如果以前使用过 ADSI,则可能已使用了 IDirectorySearch COM 接口。DirectorySearcher 对象是 IDirectorySearch 的包装。有关此接口的详细信息,请参阅 MSDN Library(网址为 https://go.microsoft.com/fwlink/?LinkID=27252)中的主题 IDirectorySearch

要执行搜索,您的应用程序必须首先绑定到目录中的根点。为获得最佳性能,应选择提供最小结果集的点。配置 DirectorySearcher 以提供用于搜索操作的以下参数:

  • 将搜索范围缩小到特定对象类型的搜索筛选器
  • 要搜索的对象的范围
  • 要与对象一起返回的属性列表

在配置此搜索时,必须确定要搜索哪一对象类型,然后为该类型的对象创建搜索筛选器。DirectorySearcher 对象提供一个 Filter 属性,该属性需要一个将 LDAP 语法用作筛选器字符串的字符串。

接下来,您必须决定筛选器的范围是在应用程序绑定到的节点的基础层级中、一个级别中,还是在子树中。SearchScope 属性用于设置此参数。最后,您必须决定随对象一起返回哪些属性名称和值。

或者,您可以使用 DirectorySynchronization 对象执行目录同步搜索,这使得应用程序能够执行搜索,循环访问所有结果,执行与搜索无关的其他功能,或者暂时进入不活动状态。然后,应用程序将最终再次执行相同搜索,以检索该搜索的任何新结果。使用这种方式,应用程序可以跟踪对满足搜索中指定条件的 Active Directory 域服务的任何更新。

下图说明绑定到 Sales 容器的搜索。

搜索实例

DirectorySearcherSearchResult 对象中返回单个结果及其属性。结果集作为 SearchResultCollection 返回,这是用于搜索返回的所有 SearchResult 对象的容器。

DirectorySearcher 提供以下两个方法来执行搜索:

有关创建基本搜索应用程序的更多信息及其创建过程,请参见位于 https://go.microsoft.com/fwlink/?LinkID=27252 上的 MSDN Library 中的主题搜索 Active Directory 层次结构(可能为英文网页)。

另请参见

参考

System.DirectoryServices
DirectoryEntry
DirectorySearcher
SearchScope
DirectorySynchronization

概念

System.DirectoryServices 入门

Send comments about this topic to Microsoft.

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。