问题标签 [windows-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
97 浏览

winapi - Windows 搜索/Shell API - System.ItemUrl 数据

当我使用 Windows Search API 时,我得到的结果包括 Shell API System.ItemUrl。

由于搜索 API 包括

  • 文件
  • 电子邮件 (mapi15)
  • IE历史
  • ETC。,

ItemUrl 可以是其中任何一个(以及更多)。有没有办法获取项目的内容或数据?当然,如果是file:...URL,我可以直接解析并手动打开。但是,对于其他类型的 URL,我想获取数据。

请注意,我只是想在本地打开它,我想获取它背后的数据。如果可能的话,我还想获得预览或缩略图(如果有的话)。

0 投票
1 回答
592 浏览

c# - 如何在不降低搜索性能的情况下正确清理 C# 中的搜索字符串?

我需要清理用户的输入字符串,因为我稍后在 OLEDB 查询中使用该字符串来索引文档存储库以查找匹配的文件、描述等。问题是我不能在CONTAINS语句的查询中使用包含特殊字符的字符串.

有没有比我正在做的更好的方法来消毒而不降低准确性?

我目前正在做的是获取搜索字符串,并使用正则表达式对其进行验证:[^0-9a-zA-Z\s\/\._-]+并将其替换为空字符串以删除搜索字符串中的任何特殊字符。

我的问题是某些文件和描述包含特殊字符,如 & 和 $,如果我不允许任何类型的特殊字符,搜索精度会下降。有没有更有效的方法来做到这一点?

0 投票
1 回答
346 浏览

c++ - 使用 search-ms: 或 search: 协议将搜索结果作为 IShellItem 检索

我正在尝试在 Windows 中检索全局文件搜索结果,但 Windows 搜索文档非常复杂,我宁愿不处理 SQL 来实现如此简单的功能。运行后是否可以在 Windows 资源管理器中显示搜索结果,search:query=%s或者IShellFolderIShellItem可以在我的应用程序中处理结果项?

0 投票
3 回答
1497 浏览

c# - Windows 搜索查询文件内容中单词/子字符串的 *part*

我正在尝试使用Windows Search SQL 语法以编程方式查询 Windows Search 索引

我可以使用下面的搜索查询在我的 C# winforms 应用程序中搜索文件内容:

ISSUE:但是,我无法使用此查询在文件内容中搜索部分单词。

例如:如果一个文件(例如 .txt 文件)包含文本“abcd”,并且我搜索FREETEXT('ab'),它不会显示该文件。

我试过使用:

  • FREETEXT('ab')
  • FREETEXT('*ab*')
  • FREETEXT('\"ab\"')
  • FREETEXT('\"*ab*\"')
  • FREETEXT('*\"ab\"*')
  • FREETEXT('ab*')
  • FREETEXT('\"*ab*\"')
  • FREETEXT('\"ab\"*')

我也尝试过使用CONTAINS上述组合而不是FREETEXT.

当我ab直接在 Windows 搜索中搜索时,它会显示包含文本的文件

如何修改此查询以在文件内容中搜索单词的一部分?请帮忙!

0 投票
0 回答
578 浏览

c# - Windows 文件资源管理器搜索框中的 %UserName% 不起作用

我的用户在网络驱动器上有文件夹,其用户名部分包含在文件夹名称中。

如何修改此搜索以使其正常工作?种类:=文件夹 %UserName%

注意:以下工作,但我需要能够使用 %username% 工作。

种类:=文件夹 jsmith

如果这不起作用,我可以在记事本中为 jsmith 编辑保存的搜索,然后进行查找并替换为“System.Windows.Forms.SystemInformation.UserName Kind:=folder”之类的内容

实际上,我的目标是制作一个使用它的 .search-ms 文件。

谢谢!

0 投票
1 回答
671 浏览

c# - 指定机器名称时无法在我自己的机器上查询 SystemIndex

我正在尝试编写一个简单的程序来连接到远程机器并查询索引状态。

这是在我的机器上执行的代码。这工作正常。

但是,当我打电话GetCatalog"mycomputername.SystemIndex"不是"SystemIndex",我得到

IndexStatus.exe 中出现“System.Runtime.InteropServices.COMException”类型的未处理异常

附加信息:HRESULT 异常:0x80042103

在此处输入图像描述

Visual Studio 2015 在 Windows 8.1 上以管理员权限运行。目标计算机主要是 Windows 7 系统,程序主要从 Windows 10 系统运行。我正在使用从此处下载的 Microsoft Windows Search 3.X SDK 中的 Microsoft.Search.Interop.dll 。我关闭了防火墙以防万一,但显然不是。

我已经检查过,如果我在完全无意义的情况下调用函数,例如"sdfd". 我发现了这个

MSS_E_CATALOGNOTFOUND - 0x80042103 - (8451) WindowsSearchErrors.h

我尝试使用“localhost”而不是机器名,但这没有帮助。

MSDN 文档是这样说的:

目前 Microsoft Windows 桌面搜索 (WDS) 3.0 仅支持一个目录,名为 SystemIndex。

我不确定如何理解这一点。也许该方法无法在不同的机器之间进行选择?如果是这样,除了使用 PsExec 之类的东西之外,还有其他方法可以连接到远程目录并进行这些查询吗?

Re Ben N 的回答:这对我来说开始变得很深,但我更着迷而不是害怕。:) 经过几次修改后,您的代码对我有用:

CSearchManagerClass manager = System.Runtime.InteropServices.Marshal.CreateWrapperOfType(comManager, typeof(CSearchManagerClass));无法在 Visual Studio 2015 上编译,并会出现以下错误:

在此处输入图像描述 在此处输入图像描述

第二个错误很容易通过添加一个演员来修复:

至于“无法嵌入互操作类型”的错误信息,我发现了这个问题。有两种建议的解决方案:

  • Embed Interop Types将 Microsoft.Search.Interop 引用的属性更改为False.

  • 更改CSearchManagerClassCSearchManager

第一个解决方案使程序可以编译,但它会影响可移植性。现在该程序将无法在没有 .dll 的计算机上运行。第二种解决方案编译但抛出

mscorlib.dll 中出现“System.ArgumentException”类型的未处理异常

附加信息:类型必须是 __ComObject 或派生自 __ComObject。

当我在我自己的机器上运行它时,就在那条线上。

但是还有另一个问题,这个我不知道。当我在同事的机器上运行它时(我是他计算机上的管理员,并且 Visual Studio 以管理员权限运行),我得到

mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常

附加信息:由于以下错误,从计算机计算机名检索具有 CLSID {7D096C5F-AC08-4F1F-BEB7-5C22C517CE39} 的远程组件的 COM 类工厂失败:80070005 计算机名。

这确实让我有点害怕,因为我对 COM 几乎一无所知。我检查了他的电脑和我的电脑上是否启用了 DCOM。但是当我尝试在组件服务中访问他的计算机时,它显示为 a在此处输入图像描述并且树中缺少 DCOM 配置。域中的其他计算机也会发生同样的情况(即使我在所有工作站上都​​拥有管理员权限)。该博客表明这可能是防火墙问题,如果是,则无法克服。

您的两个答案都绝对值得赏金,但是如果您有任何建议或能够阐明正在发生的事情,我将不胜感激。如果我不能让它工作,那很好,但我肯定想从中获取尽可能多的知识。

0 投票
1 回答
328 浏览

asp-classic - 如何为我的网站编写搜索页面

我们的网站上有一个搜索页面,它是在 Windows Server 2003 上使用 ASP Classic 制作的。现在我们已经迁移到 Windows Server 2012,我们需要创建一个新的搜索页面,因为该代码在 Windows Server 2012 搜索服务上不起作用。有没有人遇到过这个。我一直在努力寻找有关如何做到这一点的好信息。如果可能的话,有人可以展示一些关于如何完成的编码示例吗?
先感谢您。

0 投票
0 回答
699 浏览

python - 使用 Python 查询 Microsoft 搜索索引

我正在尝试找到一种在 Windows 搜索索引上运行 SQL 查询的方法。

使用 .NET 或 Powershell 很容易做到这一点,但无论我做什么,我似乎都无法让它在 Python 中工作。

我尝试使用 PyODBC 并使用 JET4 驱动程序,但遇到了一大堆错误。然后,我尝试使用 win32con 客户端进行 ADO 连接,但也没有成功。

我尝试在某些地方将提供者声明为提供者MSIDXS.1Search.CollatorDSO甚至尝试直接访问 EDB 文件,但没有成功。

有没有人设法做到这一点,或者知道可能是什么问题?

作为参考,我附上了执行此操作的 Powershell 和 C# 脚本示例的链接: - https://www.petri.com/how-to-query-the-windows-search-index-using-sql-and -powershell - https://msdn.microsoft.com/en-us/library/windows/desktop/ff684395(v=vs.85).aspx

我可以使用 VB 脚本并将查询作为参数来处理它,但对我来说感觉很蹩脚......

编辑:我现在似乎正在连接到正确的数据库,但出现错误:

我的代码:

错误:

谢谢!

0 投票
1 回答
147 浏览

c# - Windows 搜索服务:获取文本片段

使用 Windows 搜索服务,我查询并获取文档的元数据,例如ItemName.

有没有办法获取找到的文本snip of the text,以便向用户显示上下文?

0 投票
1 回答
611 浏览

powershell - 如何在文件中搜索 Windows 搜索索引

我有由 Windows 搜索服务索引的文件。我需要函数,它可以在文本文件中找到一些字符串。我在 PowerShell 中有脚本,但它不能正常工作。

如果$word = "Hello"它适用于我们拥有的文件

在文件中,但不是当我们有没有空格的 Hello 时,例如:

我们也不能搜索 when$word是一个短语,例如“Hello World”。

谁知道怎么修它?