为协议处理程序创建搜索连接器

Windows 资源管理器通过注册表项条目控制为协议处理程序创建搜索连接器的过程。 通过注册表,实现者和第三方都可以启用新的和旧的协议处理程序来参与 Windows 7 搜索。

本主题的组织方式如下:

关于 Windows 7 中协议处理程序的搜索连接器

在 Windows 7 中,“开始”菜单或 Windows 资源管理器中的搜索仅包括索引位置中的文件,以及非文件系统项,例如具有搜索连接器的远程数据存储或协议处理程序项。 除了在“开始”菜单和 Shell 搜索的范围内加入协议处理程序项外,搜索连接器还允许“开始”菜单在“开始”菜单结果中将协议处理程序项组合在一起,以便用户可以单击组标题并仅查看协议处理程序的结果。 或者,用户可以导航到“搜索”文件夹,打开搜索连接器文件,并执行仅包含与该搜索连接器关联的特定协议处理程序中的项的搜索。

当用户首次启动注册了协议处理程序的应用程序时,Windows 资源管理器会在用户的“搜索”文件夹中生成该协议处理程序的搜索连接器文件 (.searchConnector-ms)。 具有协议处理程序的应用程序可以选择禁用此行为或自定义协议处理程序搜索连接器的名称和说明。

注意

用户的“搜索”文件夹的位置为 %userprofile%\Searches 或 FOLDERID_SavedSearches。 FOLDERID_SavedSearches 的 GUID 为 {7d1d3a04-debb-4115-95cf-2f29da2920da}。

 

Windows 资源管理器通过以下各节中所述的注册表项条目控制为协议处理程序创建搜索连接器的过程:

注意

无法以编程方式为协议处理程序创建搜索连接器。 必须通过注册表配置它们。

 

下表概述了注册表项及其可能的值。 协议处理程序可以填充部分或全部注册表项,其中“<协议>”替换为其协议的实际名称,例如 MAPI、文件或 csc。

注册表项 可能的值 类型 注释
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\Version 不存在(默认值)。 否则,它为 1 或更大。 REG_DWORD 此值用于检测已处理的搜索根的位置模板注册更改。 如果不存在,请使用 0 作为默认值。 或者,递增版本以通知 Windows 资源管理器应重新生成搜索连接器,因为已安装了较新版本的协议处理程序。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\DoNotCreateSearchConnectors 不存在(默认值)。 否则,设置为 1。 REG_DWORD 如果它不存在,请在“搜索”文件夹中创建 .searchconnector-ms 文件。 如果为 1,则标记为已处理且不执行任何操作。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\Default\Description 包含搜索连接器说明的可本地化字符串。 REG_SZ 可选。 它在 .searchconnector-ms 文件的 Description 元素中使用。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\Default\Name 用于命名搜索连接器的本地化字符串。 用作 .searchconnector-ms 文件的名称。 REG_SZ 每个位置必须具有唯一的名称。 如果没有此值,则将使用协议处理程序的 IShellFolder 接口提供的显示名称。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\Default\FolderType 标识要应用于搜索连接器的 FOLDERTYPEID 的 GUID。 REG_SZ 可选。 在 .searchconnector-ms 文件的 folderType 元素中用于指示应使用哪些模板来显示结果。 例如,FOLDERTYPEID_Documents 的 GUID 值。

 

禁用协议处理程序搜索连接器创建

如果你的应用程序通过协议处理程序来公开项以用于应用程序本身,并且不希望通过 Shell 公开项(在“开始”菜单和 Windows 资源管理器搜索中),则需要禁用为协议处理程序创建搜索连接器的功能。

要禁用搜索连接器创建,请将 DoNotCreateSearchConnectors 设置为 0x00000001(1),如以下注册表项示例所示。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Search
            PHSearchConnectors
               <protocol>
                  DoNotCreateSearchConnectors

如果 DoNotCreateSearchConnectors 设置为 1,则建议在协议处理程序公开的每个项上公开 System.Shell.OmitFromView 属性,并将此属性的值设置为 TRUE。 这样做将阻止协议处理程序项显示在“开始”菜单的“文件”组下。

如果 DoNotCreateSearchConnectors 存在并设置为零,则 Windows 资源管理器将为协议处理程序创建搜索连接器,协议处理程序项将在“开始”菜单和 Windows 资源管理器搜索中返回。

自定义协议处理程序搜索连接器的名称、说明或 FolderType

搜索连接器名称不仅用于标识“搜索”文件夹中的搜索连接器,还用作“开始”菜单搜索中结果的组标题。 因此,为搜索连接器提供描述性名称非常重要。 如果未在注册表项中提供名称,则默认情况下,Windows 资源管理器会使用 IShellFolder 接口提供的名称作为协议处理程序的搜索根和空白说明。 可以通过注册表项条目替代默认名称,而无需重命名 IShellFolder 接口。 尽管它不如搜索连接器名称那样可见,但你也可以通过提供自己的说明来替代搜索连接器的说明。

要替代默认名称或说明,请设置条目,如以下注册表示例所示。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Search
            PHSearchConnectors
               <protocol>
                  Default
                     Name
                     Description

此外,FolderType 条目可以设置为某个 FOLDERTYPEID GUID。 该值应为实际的 GUID,而不是其名称。 例如,应是 {94d6ddcc-4a68-4175-a374-bd584a510b78} 而不是 FOLDERTYPEID_Music。 可以在 Windows SDK 的 Shlguid.h 头文件中获取 FOLDERTYPEID 的 GUID。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Search
            PHSearchConnectors
               <protocol>
                  Default
                     FolderType = {94d6ddcc-4a68-4175-a374-bd584a510b78}

使用注册表字符串重定向

可以使用重定向字符串来确保你为搜索连接器提供的名称可以本地化。 可以包含名称和说明注册表项的可本地化字符串,而不是在注册表中输入实际的字符串。

要包含 Name 或 Description 值的可本地化字符串,请设置值,如以下注册表项示例所示。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Search
            PHSearchConnectors
               <protocol>
                  Name = @dllname.dll,-resourceID

可本地化字符串采用以下格式:

  • @dllname.dll,-resourceID,其中:
    • @dllname.dll 是包含字符串资源的 DLL 的路径
    • resourceID 是字符串资源的整数资源 ID

SHLoadIndirectString 函数中介绍了间接字符串的格式,以及追加了版本修饰符的间接字符串的格式。

还原已删除的协议处理程序搜索连接器

由于搜索连接器是用户计算机上的文件,它们可能会被错误地删除。 要还原所有已删除的协议处理程序搜索连接器,请还原默认库。 为此,请打开 Windows 资源管理器,右键单击“”文件夹,然后选择“还原默认库”。

screen shot showing the restore default libraries menu option

其他资源

Conceptual

了解协议处理程序

开发协议处理程序

通知索引更改

添加图标和快捷菜单

代码示例:协议处理程序的 Shell 扩展

安装和注册协议处理程序

调试协议处理程序