Windows 7开始菜单搜索的自定义源

时间:2010-09-30 21:15:57

标签: c# web-services search windows-7 startmenu

我最近发现了一篇关于Windows 7新版Federated Search and Search Connectors的文章。基本上,您为用户提供了一个小型XML文件(.osdx;一个OpenSearch XML文件),然后他们可以使用资源管理器搜索您所拥有的任何内容。这些搜索连接器实际上非常容易实现 - 资源管理器使用查询调用您的URL,您只需将结果作为RSS返回。

大。我目前正在开发一个Web应用程序,这种功能可能是一个很好的额外功能,可以提供给我的用户。所以我安装了样本.osdx并试了一下。它的工作原理与广告一样:

http://blogs.msdn.com/blogfiles/jimoneil/WindowsLiveWriter/7ON7FederatedSearch_14072/image_thumb_15.png

这很酷,但我希望我的搜索结果可以从“开始”菜单中获得。我(在我看来)的观点是,当应用程序本身尚未打开时,可以轻松,快速地直接访问我的Web应用程序中的项目。如果我必须打开资源管理器窗口,单击我的搜索连接器,然后搜索,只是打开浏览器并在Web应用程序中进行搜索有什么区别?

这是我尝试过的:

  • 安装.osdx后,连接器将保存为%UserProfile%\Searches\name.searchConnector-ms。此文件夹中的其他项目包括Outlook的连接器。查看该文件,有一个非常有前景的节点<includeInStartMenuScope>。我将此节点的值true添加到Channel 9 Connector,但没有运气。 (我甚至试过重启。)
  • 我遇到了year-old question that asks just about the same thing。接受的答案将我们引导至Windows API代码包,但仅提供使用 Windows搜索的类,而不是实现搜索提供程序。
  • The registry trick from Scott Hanselman。但是,这(a)只链接一个链接来运行搜索而不是包含内联结果,并且(b)对我来说不起作用,因为我(也不能指望我的用户)拥有Windows 7旗舰版。

那么,如何在“开始”菜单的即时搜索中提供项目?理想情况下,我只想配置搜索连接器的结果,但我不反对在C#中连接将安装在客户端计算机上的内容。

1 个答案:

答案 0 :(得分:2)

传统上,扩展Windows搜索的方法是通过IFilters,允许Windows了解新类型的文件。这种方法肯定会将您绑定到“开始”按钮结果。

在这种情况下,您正在处理federated search,这使得在线内容的行为就像在用户的计算机上一样。

不幸的是,我找不到任何能明显解决问题的方法。因此,您可能需要分两部分构建一个kludge:

  1. 搜索结果的IFilter(例如,“* .C9”文件)。
  2. 以“C9”结尾的文件。
  3. 顺便提一下,如果您对术语“IFilter”进行网络搜索并转到前几个搜索结果,您可能会认为由于页面顶部的注释而不再使用IFilter。

    如果发生这种情况,那么您就在旧的IFilter网站上。有关此主题的MSDN文档的当前URL位于http://msdn.microsoft.com/en-us/library/bb266451(v=VS.85).aspx

    警告的最后一点:

      

    在Windows 7及更高版本中,显式阻止使用托管代码编写的过滤器。由于多个加载项运行的进程可能存在CLR版本问题,因此必须使用本机代码编写过滤器。