如何从代码中获取 Windows 索引服务状态?

Posted

技术标签:

【中文标题】如何从代码中获取 Windows 索引服务状态?【英文标题】:How to get Windows Indexing Service state from code? 【发布时间】:2021-04-13 06:42:50 【问题描述】:

如何查找、如何从代码中读取 Windows 索引服务状态(indexing state)?操作系统为 Windows Server 2012 R2。

【问题讨论】:

您可以在事件查看器中手动查看消息吗?然后您可以在代码中检查事件以获取状态。 否 - 我在事件日志中没有看到此状态。 尝试从事件实用程序中查看是否在您进行索引时发生了任何有关 INFO 的事情。见qualitestgroup.com/resources/knowledge-center/how-to-guide/…。一旦我们手动找到它,那么我们应该尝试从 c# 中执行。 我认为您在 GUI 中看到的是手动运行索引的标准输出。 否 - 事件日志中没有任何内容。 Indexing Service Reference docs.microsoft.com/en-us/previous-versions/windows/desktop/… 中有一些内容,但 CIState 链接已失效,我不确定如何使用 Indexing Service 功能:( 【参考方案1】:

这可以通过使用我从这里得到的 Microsoft.Search.Interop 女巫来完成:https://www.nuget.org/packages/tlbimp-Microsoft.Search.Interop/

然后很容易使用来自:https://docs.microsoft.com/en-us/windows/win32/api/searchapi/ne-searchapi-catalogstatus 的文档来获取索引状态。

    Dim status As _CatalogStatus
    Dim reason As _CatalogPausedReason
    Dim manager As CSearchManager = New CSearchManager()
    Dim catalogManager As ISearchCatalogManager = manager.GetCatalog("SystemIndex")
    catalogManager.GetCatalogStatus(status, reason)

我在 Windows Server 2012 R2 上所做的一切。

【讨论】:

以上是关于如何从代码中获取 Windows 索引服务状态?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取网络适配器索引?

如何强制 Windows 索引“活动”[关闭]

如何在C#Windows窗体中登录(从MySQL服务器/数据库获取数据)?

如何通过 OpenCV 和 Python 通过索引从视频中获取帧?

使用 powershell 从远程服务器获取服务状态

lua如何从全路径中获取文件名(linux、windows通用)