如何检查Windows文件索引是否打开或关闭

3
有没有C语言的API可以用来检查文件索引是否开启或关闭?如果有代码就更好了。
3个回答

1

WMI可以提供这种功能,使用Win32_Service类。用'C'语言实现这一点是丑陋的,SDK只提供C ++示例。下面是等效的C#代码:

using System;
using System.Management;   // Add reference!!

class Program {
    public static void Main() {
        var searcher = new ManagementObjectSearcher("root\\CIMV2",
            "SELECT * FROM Win32_Service WHERE Name='wsearch'");

        foreach (ManagementObject queryObj in searcher.Get()) {
            Console.WriteLine("State = {0}", queryObj["State"]);
        }
        Console.ReadLine();
    }
}

谢谢,但我不懂C#,也不能使用C#。 - Jessica
我给了你一个赞,因为你指引了我正确的方向。 - Jessica

1

在C++中,WMI很麻烦,但本地的Service API非常干净。

SC_HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
if(hSCManager)
{
    SC_HANDLE hService = OpenService(hSCManager, _T("ServiceNameGoesHere"), SERVICE_QUERY_STATUS);
    if(hService)
    {
        // service is installed
        SERVICE_STATUS ServiceStatus;
        if(ServiceQueryStatus(hService, &ServiceStatus))
        {
            // service is running
            // get current state from ServiceStatus.dwCurrentState
        }
        else if(GetLastError() == ERROR_SERVICE_NOT_ACTIVE)
        {
            // service is not running
        }
        else
        {
            // error
        }
        CloseServiceHandle(hService);
        hService = NULL;
    }
    else if(GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST)
    {
        // service is not installed
    }
    else
    {
        // error
    }
    CloseServiceHandle(hSCManager);
    hSCManager = NULL;
}
else
{
    // error
}

我会尝试一下。你知道负责索引的服务是哪个吗? 谢谢你的回答。 - Jessica
在我的XPSP3机器上,索引服务被命名为“CiSvc”,而Windows搜索服务被命名为“WSearch”。 - Luke

-2
严谨地说,C编程语言并不了解Windows文件索引或其他特定于平台的功能。ISO C标准规定了一组严格的API,例如字符串处理、文件处理(打开、关闭等)、算术运算等,并指定和定义了它们所作用的原语。这些操作与底层平台无关。所有这些API都是由语言规范本身非常严格地定义的(请参见当前的ISO C99标准)。
您将不得不依赖于外部(对于语言来说)库来获得您所需的API(用于查找文件索引是否打开或关闭)。因此,您需要找出a) 这个库是什么 b) 从这个库中使用哪个API来调用您的C程序以及c) 如何在其他事项中链接此库到您的应用程序。

1
更苛刻地说,如果您没有对我所问的问题答案,请不要回答与我所问问题无关的答案。我明确说明需要一个C语言API,并且标题和标签特别说明它是为Windows而设计的。所以虽然我喜欢学习,但我真的对这些评论感到烦恼,很遗憾似乎这些评论占据了所有编程论坛的大部分答案。您知道答案吗?请写下来,如果不知道,请等待直到有人回答后再进行评论。 - Jessica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接