【问题标题】:Custom source for Windows 7 Start Menu SearchWindows 7 开始菜单搜索的自定义源
【发布时间】: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 提出一个好问题。

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


【解决方案1】:

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

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

很遗憾,我找不到任何可以明显解决您问题的方法。因此,您可能必须分两部分构建一个组合:

  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 版本控制问题,过滤器必须使用本机代码编写。

【讨论】:

    猜你喜欢
    • 2010-11-25
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多