Механизм поиска, используемый в Windows Vista, существенно изменился, поэтому в контексте данной главы о его новых настройках просто нельзя не упомянуть. Диалог Search

Но сначала давайте рассмотрим сам диалог поиска и способы его использования.

После того, как вы нажмете комбинацию клавиш WINDOWS+F, перед вами отобразится диалог, приведенный на рисунке 2.25. Фактически, это обычное окно проводника, имеющее дополнительную панель поиска, называемую SEARCH PANE. Собственно, такую же панель поиска можно отобразить и в проводнике, если в меню ORGANIZE выбрать команду LAYOUT/ SEARCH PANE.

С помощью дополнительной панели поиска можно определить тип файла, который вы будете искать (кнопки напротив текста SHOW ONLY). По умолчанию выбрана кнопка ALL, что говорит о том, что поиск будет вестись среди всех файлов. Также вы можете воспользоваться следующими кнопками.

* Picture. Искать среди файлов изображений с расширениями .3ds, .a11, .ai, .ani, .art, .amf, .b1n, .b8, .bmp, .cdr, .cmp, .cps, .emf,.eps, .gif, .tif, .tiff, .jpeg, .jpg и т.д. * Music. Искать среди музыкальных файлов с расширениями .aac, .aif, .aifc, .au, .cda, .dfs, .dss, .m3u, .midi, .mid, .mp3 и т.д. * Document. Искать среди файлов с расширениями .xml, .xls, .xll, .wri, .wpd, .wks, .txt, .text, .rtf, .ppt и т.д. * E-Mail. Искать среди файлов с расширениями .eml, .msg, .nws, .vcs.

Если вы не знаете, к какой категории поиска относит операционная система Windows Vista файлы с тем или иным расширением, тогда можно посмотреть содержимое ветви реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\KindMap. Данная ветвь реестра содержит в себе параметры строкового типа. Название параметра определяет расширение файла, а значение параметра — категорию поиска, с помощью которой можно найти файлы с таким расширением.

Обратите внимание на стрелочку вниз, напротив которой написан текст ADVANCED SEARCH. После нажатия на нее отобразится дополнительная панель, с помощью которой можно выполнить поиск по метаданным файла или его параметрам. Она содержит следующие элементы.

* Поле LOCATION. Определяет каталог, в котором нужно искать данные. * Поле DATE. Позволяет указать дату создания искомого файла. * Поле SIZE (KB). Позволяет указать размер искомого файла в килобайтах. * Флажок INCLUDE NON-INDEXED, HIDDEN, AND SYSTEM FILES. По умолчанию поиск выполняется только среди индексированных файлов, однако с помощью данного флажка это можно изменить. * Поле NAME. Позволяет указать имя искомого файла, или шаблон для поиска файлов. * Поле TAGS. Позволяет указать значения тегов, по которым нужно найти изображение или другой файл. * Поле AUTHORS. Позволяет указать автора документа, который нужно найти.

Приведенные выше параметры отображаются, если вы выполняете поиск среди всех файлов (установлена кнопка ALL поля SHOW ONLY). Если же вы выполняете поиск среди определенного типа файлов, тогда некоторые параметры поиска будут другими. Сохранение запросов поиска

В Windows Vista присутствует возможность сохранения запросов поиска, с целью их дальнейшего использования. Для этого после проведения поиска достаточно нажать на кнопку SAVE SEARCH панели инструментов. Это приведет к сохранению запроса поиска в файле, расположенном в каталоге %userprofile%\searches. Ранее в этой книге уже описывалось содержимое данного каталога, сейчас же давайте поговорим о самих создаваемых папках поиска.

Каталог, создаваемый при сохранении поиска, представляет собой виртуальный каталог (нововведение Windows Vista). Виртуальные каталоги основаны на запросах к базам данных и при входе в соответствующий каталог будет выполняться запрос. В нашем случае, будет начинаться поиск на основе запроса. Также на основе виртуального каталога создана ссылка ВСЕ ПРОГРАММЫ меню ПУСК.

Еще одним термином операционной системы Windows Vista является термин виртуализация файлов и реестра. Данный механизм применяется операционной системой при активном UAC.

Механизм виртуализации используется операционной системой в том случае, если какая-либо программа пытается записать данные в каталог (или изменить значения ветви реестра), доступ на запись к которому ей запрещен. В этом случае запрос программы перенаправляется в каталог вида %userprofile%\AppData\Local\VirtualStore\«путь к реальному каталогу, в который пытается записать данные программа, без буквы диска», либо в ветвь реестра вида HKCU\Software\Classes\VirtualStore\«путь к реальной ветви реестра, в которую пытается записать данные программа».

Например, если программа пытается записать файл settings.ini в каталог C:\program files\this_program, доступ к которому ей запрещен, фактически программа запишет файл settings.ini в каталог %userprofile%\AppData\Local\VirtualStore\program files\this_program.

Фактически, каталог запроса поиска представляет собой текстовый файл в формате XML с расширением .search. Для примера давайте попробуем создать команду контекстного меню файлов с данным расширением, при помощи которой можно просмотреть содержимое файла в блокноте. Для этого нужно присвоить значение notepad.exe %1 параметру по умолчанию ветви реестра HKCR\SearchFolder\shell\Notepad.exe\command. Для сохранения целостности контекстного меню файлов запроса нужно также присвоить значение open параметру по умолчанию ветви реестра HKCR\SearchFolder\shell.

После этого в контекстном меню каталогов запроса поиска отобразится команда Notepad.exe, с помощью которой можно просмотреть запрос в блокноте. Также вы сможете изменять запрос поиска непосредственно в блокноте. Вкладка Search диалога Folder Options

Основным диалогом настройки механизма поиска является вкладка SEARCH диалога FOLDER OPTIONS. Данная вкладка содержит в себе набор флажков, рассортированных по типу применения. Данные флажки изменяют параметры REG_DWORD типа ветви HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Search\Preferences.

Мы же рассмотрим назначения всех этих флажков вместе.

* INCLUDE SUBFOLDERS WHEN TYPING IN THE SEARCH BOX. Изменяет значение параметра SearchSubFolders. Данный флажок определяет, будет ли выполняться поиск в содержащихся в каталоге подкаталогах, когда вы используете панели быстрого поиска (например, панель поиска в меню ПУСК или в окне проводника). * FIND PARTIAL MATCHES. Изменяет значение параметра AutoWildCard. Данный флажок определяет, будет ли по умолчанию выполняться поиск по части слова или для этого нужно использовать символы подстановки. * USE NATURAL LANGUAGE SEARCH. Изменяет значение параметра EnableNaturalQuerySyntax. Данный флажок определяет, будет ли при выполнении поиска использоваться механизм операционной системы Windows Vista NATURAL QUERY SYNTAX. * DON’T USE THE INDEX WHEN SEARCHING THE FILE SYSTEM (MIGHT BE SLOW). Изменяет значение параметра WholeFileSystem. Если данный флажок установлен, тогда поиска в файловой системе не будет выполняться только в содержимом индекса. * INCLUDE SYSTEM DIRECTORIES. Изменяет значение параметра SystemFolders. Данный флажок определяет, будет ли выполняться поиск в системных каталогах. * INCLUDE COMPRESSED FILES (ZIP, CAB…). Изменяет значение параметра ArchivedFiles. Данный флажок определяет, будет ли выполняться поиск в заархивированных файлах (если поиск не выполняется в индексе).

Также на данной вкладке расположен переключатель, с помощью которого можно определить, где именно по умолчанию будет выполняться поиск. Данный переключатель изменяет значения параметров REG_DWORD типа SearchOnly, расположенных в ветвях реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Search\PrimaryProperties\IndexedLocations и HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Search\PrimaryProperties\UnindexedLocations, и имеет следующие положения.

* IN INDEXED LOCATIONS, SEARCH FILENAMES AND CONTENTS. IN NON-INDEXED LOCATIONS, SEARCH FILE NAMES ONLY. В индексированных каталогах выполнять поиск как по имени файла, так и в его содержимом. Если же каталог не индексирован, тогда выполнять поиск только в имени файла. * ALWAYS SEARCH FILE NAMES AND CONTENTS. Выполнять поиск как в имени файла, так и в его содержимом. * ALWAYS SEARCH FILE NAMES ONLY. Выполнять поиск только в имени файла.

Диалог Indexing Options

Данный диалог предназначен для настройки индексирования файлов и расположен в ПАНЕЛИ УПРАВЛЕНИЯ. Чтобы его можно было запустить, нужно иметь административные права, а также необходимо, чтобы служба WINDOWS SEARCH была запущена.

После его запуска перед вами отобразится диалог, представленный на рисунке 2.26.

Он отображает количество файлов, находящихся на данный момент в индексе, а также список папок, содержимое которых разрешено добавлять в индекс. Чтобы добавить папку, содержимое которой будет индексироваться, или удалить уже присутствующую папку, нужно нажать на кнопку MODIFY…. После этого отобразится диалог, представленный на рисунке 2.27. Как видно из этого рисунка, чтобы добавить содержимое папки в индекс, достаточно поставить флажок напротив нее. В противном случае нужно снять флажок. К сожалению, удалять из индекса автономные папки нельзя.

Также в диалоге INDEXED OPTIONS присутствует кнопка ADVANCED, с помощью которой можно отобразить диалог ADVANCED OPTIONS. Данный диалог содержит две вкладки: INDEX SETTINGS и FILE TYPES.

С помощью вкладки INDEX SETTINGS можно изменить такие параметры индексирования файлов, как:

* будут ли индексироваться зашифрованные файлы; * будут ли отдельно индексироваться похожие слова, но с небольшим отличием в написании; * где будет находиться каталог, содержащий индекс (кнопка SELECT NEW); * а также можно удалить старый индекс и начать формирование нового, если вы подозреваете, что старый индекс был поврежден (кнопка REBUILD).

После перехода на вкладку FILE TYPES, перед вами отобразится список всех зарегистрированных в системе расширений файлов. Если флажок напротив расширения установлен, тогда файлы с данным расширением будут помещаться в индекс. По умолчанию в индекс помещаются очень многие файлы с расширениями, которые могут быть вам совершенно не нужны, поэтому желательно сразу же снять флажки напротив тех расширений, файлы которых вы не хотите видеть в индексе.

После этого обратите внимание на второй столбик списка расширений — он определяет, что именно будет индексироваться у файла, все содержимое файла и его свойства, или только его свойства. Если вы выделите расширение файла, тогда с помощью переключателей INDEX PROPERTIES ONLY и INDEX PROPERTIES AND FILE CONTENTS, расположенных внизу диалога ADVANCED OPTIONS, сможете изменить индексируемое содержимое файла. Настройка поиска с помощью групповых политик

Для настройки поиска с помощью групповых политик применяется раздел Конфигурация компьютера/АДМИНИСТРАТИВНЫЕ ШАБЛОНЫ/Windows Components/Search. Политики данного раздела описаны в файле search.admx, изменяют параметры REG_DWORD типа, расположенные в ветви реестра HKLM\SOFTWARE\Policies\Microsoft\Windows\Windows Search.

* AllowIndexingEncryptedStoresOrItems. Если значение данного параметра равно 1, тогда индексирование шифрованных файлов будет разрешено. * AllowUsingDiacritics. Если значение данного параметра равно 1, использование диакритических знаков будет разрешено. В этом случае слова, содержащие в своем составе диакритические знаки, и те же слова, но без диакритических знаков, будут считаться разными словами. В противном случае такие пары слов будут считаться идентичными. * DataDirectory. Данный параметр имеет строковый тип. С его помощью можно изменить путь к каталогу, в котором будет храниться база данных индексирования. * PreventIndexingEmailAttachments. Если значение данного параметра равно 1, тогда индексация почтовых вложений запрещена. * PreventIndexingOfflineFiles. Если значение данного параметра равно 1, тогда индексация содержимого каталога автономных файлов будет запрещена. * PreventIndexingOutlook. Если значение данного параметра равно 1, тогда индексация сообщений почтового клиента будет запрещена. * PreventIndexingPublicFolders. Если значение данного параметра равно 1, тогда индексация содержимого каталога Public будет запрещена. * PreventIndexingUncachedExchangeFolders. Если значение данного параметра равно 1, тогда индексация некэшируемых каталогов программы Exchange будет запрещена (по умолчанию запрещена). * PreventUsingAdvancedIndexingOptions. Если значение данного параметра равно 1, тогда диалог настройки дополнительных возможностей индексирования (отображается при помощи кнопки ДРУГИЕ диалога ПАРАМЕТРЫ ИНДЕКСИРОВАНИЯ) отображаться не будет.

Настройка дополнительных параметров индексирования

А теперь давайте рассмотрим дополнительные возможности настройки индексирования файлов. Одной из таких возможностей является изменение свойств файлов, которые будут индексироваться. По умолчанию список свойств хранится в текстовом файле msscolumn.txt, расположенном в каталоге %programdata%\Microsoft\Search\Config. Данный файл хорошо документирован, однако его настоятельно не рекомендуется изменять вручную. Если вы хотите изменить параметры индексирования свойств, необходимо воспользоваться файлом gencolmn.xsl, после чего нужно перезапустить службу индексирования, что приведет к повторному созданию файла msscolumn.txt.

Другим способом дополнительной настройки индексирования является редактирование параметров ветви реестра HKLM\SOFTWARE\Microsoft\Windows Search и ее подразделов. Данная ветвь реестра содержит следующие наиболее интересные параметры.

* Data Directory. Данный параметр строкового типа позволяет изменить путь к каталогу, в котором служба индексирования будет хранить свои данные. По умолчанию используется каталог %programdata%\Microsoft\Search\Data. * DefaultColumnFile. Данный параметр строкового типа позволяет изменить путь к файлу msscolumn.txt, который, как мы знаем, содержит в себе список свойств, которые будут индексироваться. * UseLowPriorityConfiguration. Данный параметр REG_DWORD типа позволяет определить приоритет работы службы индексирования (то есть, количество процессорного времени, которое будет использоваться для создания и проверки индекса).

Также следует выделить ветвь реестра HKLM\SOFTWARE\Microsoft\Windows Search\CatalogNames\Windows\SystemIndex. Она также содержит несколько интересных параметров.

* IgnoreShortcuts. Данный параметр REG_DWORD типа определяет, будут ли заноситься в индекс ярлыки файлов. * Pkm:catalog:LastUrlIndex. Данный параметр строкового типа определяет название файла, на котором завершился процесс индексирования файлов.

Еще одной ветвью реестра, которая содержит интересные параметры индексирования, является ветвь HKLM\SOFTWARE\Microsoft\Windows Search\Gather. Она определяет параметры выполнения индексирования файлов и содержит следующие возможности.

* LowDiskMinimumMBytes. Данный параметр REG_DWORD типа позволяет указать размер свободного места на диске (в мегабайтах), содержащем базу данных индекса, при преодолении которого помещение файлов в индекс будет запрещено. По умолчанию файлы в индекс не помещаются, если на диске осталось меньше 50 Мбайт. * NotifyQueueFileLimit. Позволяет указать максимальное количество файлов, которые можно поместить в индекс. По умолчанию используется значение 49999 (в десятичной системе счисления).

Поиск с помощью программы where

Также выполнить поиск можно с помощью новой программы командной строки операционной системы Windows Vista. Она позволяет выполнять поиск на основе шаблонов в указанном каталоге.

У вас, возможно, возникнет вопрос, зачем пользоваться этой программой, если можно использовать стандартный диалог FIND операционной системы Windows Vista. Дело в том, что поиск при помощи программы where примерно раз в 20 быстрее, чем при помощи диалога FIND.

Ниже мы рассмотрим основные возможности данной программы. Чтобы просмотреть ее подробное описание, в командной строке введите команду where /?.

Where «шаблон имени файла или несколько шаблонов, написанных через пробел» Выполняет поиск файлов на основе указанных шаблонов в текущем каталоге. При этом на экран отображаются только пути к найденным файлам и их имена.

В шаблонах имен файлов используются стандартные подстановочные символы. Например, символ ? заменяет один любой символ, а символ * заменяет любое количество символов. Например, шаблон test*.* выполняет поиск всех файлов любого расширения, имена которых начинаются с test. А шаблон test?.mp? выполняет поиск файлов, состоящих из 5 символов, первые четыре которых равны test. Расширение файла должно состоять из трех символов, первые два которых равны mp.

Where /R «каталог» «шаблон имени файла или несколько шаблонов, написанных через пробел» Выполнить поиск на основе указанных шаблонов в указанном каталоге и его подкаталогах.

Where /T «каталог» «шаблон имени файла или несколько шаблонов, написанных через пробел» Кроме имени найденных файлов отображается их размер, а также дата изменения. Поиск с помощью программы find.exe

Если же вам нужно выполнить поиск в содержимом файла или файлов каталога, тогда можно воспользоваться программой командной строки find.exe. Основной синтаксис данной программы следующий: find «строка, по которой ищем» «путь к каталогу и название файла». Например, с помощью команды find "Windows" C:\download\support.microsoft.com\kb\* выполняется поиск файлов, содержащих слово Windows, среди всех файлов соответствующего каталога.

Также перед строкой, которую нужно искать, можно указать дополнительные опции, изменяющие сам смысл поиска.

* /V. В результате поиска отобразить на экране все строки, которые не содержат в себе той строки, которую мы ищем. * /C. В результате поиска отобразить на экране все строки, которые содержат в себе ту строку, которую мы ищем. * /N. В результате поиска отобразить номера строк, которые подходят условиям поиска. * /I. Игнорировать регистр искомого слова при выполнении поиска.

Поиск с помощью программы findstr.exe

Большими возможностями поиска в содержимом файла обладает программа командной строки findstr.exe. Хотя ее основной синтаксис такой же, как и у программы find.exe (findstr «строка, по которой ищем» «путь к каталогу и название файла»), она поддерживает больше опций поиска.

Просмотреть список опций данной программы можно при помощи команды findstr /?.