Windows 资源管理器通过注册表项条目控制为协议处理程序创建搜索连接器。 通过注册表,实现者和第三方都可以启用新的和旧的协议处理程序来参与 Windows 7 搜索。
本主题按如下所示进行组织:
关于 Windows 7 中协议处理程序的搜索连接器
在 Windows 7 中,“ 开始” 菜单或 Windows 资源管理器中的搜索仅包括索引位置中的文件,以及非文件系统项,例如具有搜索连接器的远程数据存储或协议处理程序项。 除了在“开始”菜单和 Shell 搜索的范围内包括协议处理程序项外,搜索连接器还允许“开始”菜单在“开始”菜单结果中将协议处理程序项组合在一起,因此用户可以单击组标头并仅查看协议处理程序的结果。 或者,用户可以导航到 “搜索” 文件夹,打开搜索连接器文件,并执行仅包含与该搜索连接器关联的特定协议处理程序中的项的搜索。
当用户首次启动注册协议处理程序的应用程序时,Windows 资源管理器将为用户的 Search 文件夹中的协议处理程序生成搜索连接器文件 (.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>\版本 | 不存在(默认值)。 否则为 1 或更大。 | REG_DWORD | 此值用于检测已处理的搜索根的位置模板注册更改。 如果不存在,请使用 0 作为默认值。 或者,增加版本以通知 Windows 资源管理器应重新生成搜索连接器,因为已安装了较新版本的协议处理程序。 |
| <HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\protocol>\DoNotCreateSearchConnectors | 不存在(默认值)。 否则设置为 1。 | REG_DWORD | 如果不存在,请在 Search 文件夹中创建 .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 资源管理器搜索中返回。
自定义协议处理程序搜索连接器的名称、描述或文件夹类型
搜索连接器名称不仅用于标识 “搜索” 文件夹中的搜索连接器,还用作 “开始” 菜单搜索中结果的组标头。 因此,为搜索连接器提供描述性名称非常重要。 如果未在注册表项中提供名称,则默认情况下,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 资源管理器,右键单击 “库 ”文件夹,然后选择“ 还原默认库”。
其他资源
相关主题