Как запустить / остановить / приостановить индексатор поиска Windows

StackOverflow https://stackoverflow.com/questions/1621736

  •  06-07-2019
  •  | 
  •  

Вопрос

Я хотел бы определить, как программно запустить / остановить / приостановить индексатор из Microsoft Search.

Я знаю, что это возможно, потому что я видел, как это делается в программах, подобных этой: http://brandontools.com/files/folders/sidebar_gadgets/entry511.aspx

Однако я не могу найти никаких документов в MSDN или где-либо еще.

Существует служба "Windows Search", которой можно управлять с помощью традиционных методов управления службами.Однако запуск / остановка этой службы также изменяет доступность самого поиска.Я хочу контролировать только индексатор.

Кто-нибудь знает, где можно найти документы, описывающие, как взаимодействовать с индексатором?Мои навыки поиска подвели меня.

Это было полезно?

Решение

Нет способа просто отключить часть индексации.Это услуга "все или ничего".В описании службы WSearch говорится:

"Обеспечивает индексацию контента и кэширование свойств для файлов, электронной почты и другого контента (через расширяемые API).Сервис реагирует на уведомления о файлах и электронной почте, чтобы проиндексировать измененный контент.Если служба остановлена или отключена, Проводник не сможет отображать представления элементов в виртуальных папках, и поиск в Проводнике вернется к медленному поиску по элементам ".

Однако вы могли бы управлять им через свойства диска / папки ...в Проводнике вы можете переключить его для отдельного диска (см. Свойства диска;есть опция "разрешить службу индексации ...") или для папки (свойства папки -> дополнительно -> "Для быстрого поиска разрешите службу индексации ...").

Редактировать ...немного погуглив, вы обнаружите, что вышеуказанные свойства доступны - если вы посмотрите на страницу MSDN для Системные атрибуты.IO.Fileатрибуты, там есть недвижимость NotContentIndexed с описанием Файл не будет проиндексирован службой индексации содержимого операционной системы.Я бы предположил, что вы должны иметь возможность установить это для отдельных папок.Я не знаю, работает ли это, если установить на уровне диска (без рекурсивного запуска через диск), но, надеюсь, это даст вам преимущество в том, чего вы в конечном итоге пытаетесь достичь.

Другие советы

в соответствии с Microsoft не существует официального способа сделать это.

Что - то вроде этого:

Сервис ServiceController = новый ServiceController("WSearch");

Обслуживание.Начать();

или

Обслуживание.Стоп();

Вот отличное руководство по программному взаимодействию с поиском Windows: статья в JoyOfCode .

Поиск Windows 3. x SDK предоставляет .NET API, который работает с Windows Search 3 или 4.

К сожалению, он не выставляет паузу / резюме. Все обнаруженные мной контрольные примеры используют WMI, чтобы остановить службу поиска. Очевидно, это прекратит индексирование, но за счет самого поиска будет недоступен.

Это старая ветка, но я наткнулся на нее. Кто-то еще может.

Используйте сценарий AutoIT, чтобы открыть параметры индексирования, и нажмите кнопку «Пауза» в диалоговом окне.

Откройте " Выполнить " Диалог (Пуск | Выполнить), введите (или скопируйте) % SystemRoot% \ system32 \ compmgmt.msc / s и разверните последний

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top