我想确定如何以编程方式从Microsoft Search开始/停止/暂停索引器。

我知道这是可能的,因为我已经在像这样的程序中看到了它: http://brandontools.com/files/folders/sidebar_gadgets/entry511.aspx

但是,我无法在MSDN或任何地方找到任何文档。

有一个“Windows搜索”可以通过传统的服务控制方法控制的服务。但是,启动/停止此服务还会更改搜索本身的可用性。我想控制索引器。

有没有人知道在哪里可以找到描述如何与索引器交互的文档?我的搜索能力让我失望。

有帮助吗?

解决方案

没有办法简单地禁用索引部分。这是一个全有或全无的服务。 WSearch服务的描述说明:

  

“为文件,电子邮件和其他内容(通过可扩展性API)提供内容索引和属性缓存。该服务响应文件和电子邮件通知以索引修改后的内容。如果停止或禁用该服务,资源管理器将无法显示项目的虚拟文件夹视图,并且在资源管理器中搜索将回退到逐项慢速搜索。“

但是,您可以通过驱动器/文件夹属性控制它...从资源管理器中,您可以为单个驱动器切换它(请参阅驱动器的属性;有一个选项“允许索引服务.. 。“或”文件夹(文件夹属性 - >高级 - >"对于快速搜索,允许索引服务...“)。

编辑 ...有点谷歌搜索,上面的属性可用 - 如果您查看 System.IO.FileAttributes ,有一个属性 NotContentIndexed ,其描述为该文件将不被操作系统的内容索引服务编入索引。我认为你应该能够在单个文件夹上设置它。如果设置在驱动器级别(没有通过驱动器的递归运行),我不知道这是否有效,但希望它能让你在最终想要实现的任何事情上领先一步。

其他提示

根据微软没有官方的方式这样做。

这样的事情:

ServiceController service = new ServiceController(" WSearch");

service.Start();

service.Stop();

以下是以编程方式与Windows搜索进行交互的精彩教程: JoyOfCode上的文章

Windows Search 3。 x SDK 提供适用于Windows Search 3或4的.NET API。

不幸的是,它不会暴露暂停/恢复。我发现的所有索引控件样本都使用WMI来停止搜索服务。显然,这将停止索引,但代价是搜索本身无法使用。

这是一个旧线程,但我碰到了它。其他人也可能。

使用AutoIT脚本打开索引选项,然后单击对话框中的“暂停”按钮。

打开“运行”按钮对话框(开始|运行),键入(或复制) %SystemRoot%\ system32 \ compmgmt.msc / s 展开最后一个

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top