如何从代码中获取 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 索引服务状态?的主要内容,如果未能解决你的问题,请参考以下文章
如何在C#Windows窗体中登录(从MySQL服务器/数据库获取数据)?