【问题标题】:How to get Windows Indexing Service state from code?如何从代码中获取 Windows 索引服务状态?
【发布时间】: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 功能:(

标签: c# windows vb.net windows-search 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 上所做的一切。

【讨论】:

    猜你喜欢
    • 2020-02-06
    • 2010-10-22
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多