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

jos*_*736 12 c# search web-services startmenu windows-7

我最近发现了一篇关于Windows 7新的联合搜索和搜索连接器的文章.基本上,您为用户提供了一个小型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,但没有运气.(我甚至试过重启.)
  • 我遇到了一个长达一年的问题,问了同样的事情.接受的答案将我们引导至Windows API代码包,但仅提供用于使用 Windows搜索的类,而不是实现搜索提供程序.
  • 来自Scott Hanselman的注册表技巧.但是,这个(a)只链接一个链接来运行搜索,而不是包含内联结果,并且(b)对我来说不起作用,因为我(我也不能指望我的用户)拥有Windows 7旗舰版.

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

Zia*_*hoy 2

传统上,扩展 Windows 搜索的方法是通过IFilter,它允许 Windows 识别新类型的文件。这种方法肯定会将您与“开始”按钮结果联系起来。

在这种情况下,您正在处理联合搜索,这使得在线内容就像存在于用户的计算机上一样。

不幸的是,我找不到任何可以明显解决你的问题的东西。因此,您可能必须将拼凑物分为两部分:

  1. 用于搜索结果的 IFilter(例如“*.C9”文件)。
  2. 以“C9”结尾的文件。

顺便说一句,如果您对术语“IFilter”进行网络搜索并转到前几个搜索结果,您可能会认为由于页面顶部的注释而不再使用 IFilter。

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

最后一点警告:

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