Как проверить, включено или выключено индексирование файлов Windows

Есть ли API в C, который я могу использовать, чтобы проверить, включено или выключено индексирование файлов? Код приветствуется.

WMI – это боль в C ++, но собственный 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 } 

WMI может предоставить это, используйте class 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 не имеет никакого знания индексирования файлов Windows или, в этом отношении, других функций, специфичных для платформы. Стандарт ISO C определяет строгий набор API, например, для обработки строк, обработки файлов (открытие, закрытие и т. Д.), Арифметических операций и т. Д., А также определяет и определяет примитив, на котором они действуют. Эти операции являются агностическими для базовой платформы. Все эти API очень строго определяются самой спецификацией языка (см. Стандарт ISO C99 для текущей ссылки).

Вам нужно будет полагаться на внешнюю (на язык) библиотеку, чтобы получить требуемый API (API, чтобы узнать, включено или выключено индексирование файлов). Итак, что вы хотите узнать: a) что такое библиотека b) какой API использовать из этой библиотеки для вызова из вашей программы C и c) как связать эту библиотеку с вашим приложением между прочим.