Windows 7 开始菜单搜索的自定义源
Posted
技术标签:
【中文标题】Windows 7 开始菜单搜索的自定义源【英文标题】:Custom source for Windows 7 Start Menu Search 【发布时间】:2011-04-19 14:14:50 【问题描述】:我最近看到一篇关于 Windows 7 的新 Federated Search and Search Connectors 的文章。基本上,您为用户提供了一个小的 XML 文件(.osdx;一个 OpenSearch XML 文件),然后他们可以使用资源管理器搜索您拥有的任何内容。这些搜索连接器实际上很容易实现 - Explorer 通过查询调用您的 URL,您只需将结果作为 RSS 返回。
太好了。我目前正在开发一个网络应用程序,其中这种功能可能是提供给我的用户的一个不错的额外功能。所以我安装了示例 .osdx 并进行了尝试。它的工作原理与宣传的差不多:
(来源:msdn.com)
这很酷,但我希望我的搜索结果可以从“开始”菜单中获得。重点(在我看来)是在应用程序本身尚未打开时轻松、快速、直接地访问我的网络应用程序中的项目。如果我必须打开资源管理器窗口,请单击我的搜索连接器,然后搜索,这与仅打开浏览器并在 Web 应用程序中进行搜索有什么区别?
这是我尝试过的:
.osdx 安装后,连接器保存为%UserProfile%\Searches\name.searchConnector-ms
。此文件夹中的其他项目包括 Outlook 的连接器。查看该文件,有一个非常有前途的节点,名为<includeInStartMenuScope>
。我将这个值为true
的节点添加到Channel 9 连接器,但没有运气。 (我什至尝试重新启动。)
我遇到了year-old question that asks just about the same thing。接受的答案将我们引导至 Windows API 代码包,但它仅提供用于使用 Windows 搜索的类,而不是实现搜索提供程序。
The registry trick from Scott Hanselman。但是,这 (a) 仅固定一个链接来运行搜索,而不是包含内联结果,并且 (b) 对我不起作用,因为我(也不能指望我的用户)拥有 Windows 7 Ultimate。
那么,如何为“开始”菜单的即时搜索提供项目?理想情况下,我只想配置要包含的搜索连接器的结果,但我不反对在 C# 中连接一些将安装在客户端计算机上的东西。
【问题讨论】:
+1 提出一个好问题。 【参考方案1】:传统上,扩展 Windows 搜索的方式是通过IFilters,它允许 Windows 理解新类型的文件。这种方法肯定会将您与“开始”按钮的结果联系起来。
在这种情况下,您正在处理federated search,这使得在线内容的行为就好像它存在于用户的计算机上一样。
很遗憾,我找不到任何可以明显解决您问题的方法。因此,您可能必须分两部分构建一个组合:
-
用于搜索结果的 IFilter(例如,“*.C9”文件)。
以“C9”结尾的文件。
顺便说一句,如果您对“IFilter”一词进行网络搜索并转到前几个搜索结果,您可能会认为由于页面顶部的注释而不再使用 IFilter。
如果发生这种情况,那么您在旧的 IFilter 站点。有关此主题的 MSDN 文档的当前 URL 为 http://msdn.microsoft.com/en-us/library/bb266451(v=VS.85).aspx。
最后一点警告:
在 Windows 7 及更高版本中,以托管代码编写的过滤器被显式阻止。由于运行多个加载项的进程存在潜在的 CLR 版本控制问题,过滤器必须使用本机代码编写。
【讨论】:
以上是关于Windows 7 开始菜单搜索的自定义源的主要内容,如果未能解决你的问题,请参考以下文章