Frage

Gibt es eine API in C, dass ich verwenden kann, um zu überprüfen, ob Datei Indizierung ein- oder ausgeschaltet ist? Code wird geschätzt.

War es hilfreich?

Lösung

WMI ist ein Schmerz in C ++, aber der native Service API ist ziemlich sauber.

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
}

Andere Tipps

WMI diese zur Verfügung stellen kann, verwenden Sie die Klasse Win32_Service. Dadurch in 'C' fugly ist, das SDK bietet nur C ++ Proben . Dies ist das Äquivalent C # -Code:

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();
    }
}

Um pedantisch zu sein, die C-Programmiersprache hat keine Kenntnisse von Windows-Dateiindizierung oder was das betrifft andere plattformspezifische Funktionen. Die ISO-C-Standard spezifiziert eine Reihe von strengen API wie für String-Handling, Dateihandling (Öffnen, Schließen etc.), arithmetische Operationen usw. und spezifiziert und definiert die primitiven sie wirken auf. Diese Operationen sind Agnostiker der zugrunde liegenden Plattform. Alle diese API sind sehr streng von der Sprachspezifikation selbst (siehe ISO C99-Standard für eine aktuelle Referenz).

definiert

Sie müßten auf einer externe (die Sprache) Bibliothek verlassen, um das API Sie wünschen zu erhalten (API, um herauszufinden, ob die Datei Indizierung ein- oder ausgeschaltet ist). Also, was wollen Sie, um herauszufinden, ist a), was diese Bibliothek ist b) welche API Verwendung aus dieser Bibliothek aus Ihrem C-Programm aufrufen und c), wie unter anderem diese Bibliothek zu Ihrer Anwendung zu verknüpfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top