Отслеживание запросов Windows Search - PullRequest
2 голосов
/ 30 июня 2010

Я могу включить ведение журнала для Поиск Windows через реестр (см. Ниже), но при этом фиксируются только запросы, отправленные через пользовательский интерфейс по умолчанию для Поиск Windows .Я хочу перехватывать запросы, используемые Outlook 2003 , Outlook 2007 , OneNote 2007 или любым другим приложением, которое обращается к SystemIndex.

HKEY_CURRENT_USER\Software\Microsoft\Windows Desktop Search\DS\WriteLog[DWORD]0|1

Я хочу проанализировать эти запросы, чтобы лучше понять, как создавать запросы для моей личной утилиты поиска (WinForms / WPF / ADO.NET / OleDb), которую я использую для поиска в своей библиотеке кода (физический файл).system).

Как отслеживать все запросы, выполняемые в SystemIndex Поиск Windows ?

Ответы [ 3 ]

0 голосов
/ 22 июля 2010

Системный индекс реализован как источник OLE DB.Вы можете узнать источник данных из строки подключения, предоставленной ISearchQueryHelper :: get_ConnectionString .Я искал способ мониторинга источника OLE DB, но пока ничего не нашел.

OLE DB сводится к файлу Extensible Storage Engine (ESE) с именем Windows.edb, которая существует по умолчанию в папке профиля \All Users\Application Data\Microsoft\Search\Data\Applications\Windows\.

Все файлы ESE управляются ESENT.DLL.Может быть возможно перехватить эту DLL и отследить запросы.Подключение и регистрация возможны с такими программами, как StraceNT и xptruss

После нескольких часов поиска, кажется, не существует более простого способаполучить журнал всех поисковых запросов Windows.Поскольку изучение синтаксиса запроса является вашей целью, может быть проще искать учебные пособия в других местах, например, используя пользовательский интерфейс поиска Windows по умолчанию и журнал запросов, о котором вы уже знаете.Также может быть полезно поэкспериментировать с преобразованием запросов ADS и NDS в SQL с использованием интерфейса ISearchQueryHelper.

0 голосов
/ 21 декабря 2010

Я верю, что ответ здесь, но не успел его опробовать.

0 голосов
/ 15 июля 2010

Если вы действительно хотите захватить все обращения к SystemIndex, это будет довольно высокий порядок, так как существует несколько способов , к которым можно получить доступ:

Если мы игнорируемнемного и сосредоточиться на другой цели:

Я хочу проанализировать эти запросы, чтобы лучше понять, как создавать запросы для моей личной поисковой утилиты

* 1031.*

Тогда я бы посмотрел на интерфейс ISearchQueryHelper .

Интерфейс ISearchQueryHelper

Предоставляет методы для построения запроса от пользователяввод, преобразование запроса в WindowsВыполните поиск SQL и получите строку подключения для инициализации подключения к индексу поиска окна.

Один из методов этого интерфейса - GenerateSQLFromUserQuery , который может вам помочь.

GenerateSQLFromUserQuery

Создает запрос языка структурированных запросов (SQL) на основе предоставленной клиентом строки запроса, выраженной либо в расширенном синтаксисе запроса (AQS), либо в естественном синтаксисе запроса (NQS).

...