Задачи и инструменты реестра

Итак, мы окончили знакомство с основами реестра. По-настоящему интересно становится, когда вы узнаете, какие инструменты можно использовать в реестре и что с ними можно делать.

Поиск в реестре

У редактора реестра есть простая (к сожалению) функция поиска, позволяющая искать текст во всех разделах и значениях. Просто выберите Найти (Find) в меню Правка (Edit) редактора реестра, напечатайте требуемый текст (рис. 3.7) и нажмите кнопку Найти далее (Find Next).

ГЪлгк J 1 Отмм I 0 имм рэшлсв В нчсиа иммярэв Тйгшо С1РОД uf-rvfjjHr Рис. 3.7. Окно Поиск (Find) редактора реестра поможет найти текст в названиях разделов, параметров и их значениях

Поиск в редакторе реестра не всегда хорошо работает. Он очень медленный и не сохраняет историю предыдущих иоисков. Но его самый большой недостаток в том, что вы можете найти только одно совпадение за один раз. Приходится постоянно нажимать Найти далее (Find Next), чтобы просмотреть другие результаты. А если вы случайно щелкнули пару раз на Найти далее (Find Next), то обратного пути уже нет. И наконец, не существует способа выполнить поиск и замену, но об этом поговорим позже.

Нажмите Ctrl+F или выберите меню Правка ? Найти (Edit ? Find), чтобы начать поиск в текущем разделе. (Чтобы вести поиск по всему реестру, прокрутите дерево разделов вверх и выберите Компьютер.)

В окне поиска убедитесь, что все три параметра в разделе Просматривать при поиске - Имена разделов, Имена параметров и Значения параметров - были выбраны. Параметр Искать только строку целиком должен быть выключен, если, конечно, вы не ищете текст, который может появляться в других словах. Поиск слова handle найдет PersistentHandler и TeachAndleam.

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

Вам, возможно, придется научиться некоторым уловкам, чтобы найти в реестре: О Пункты контекстных меню

Пункты контекстных меню обычно хранятся в ветви HKEY_CLASSES_ROOT (см. «Сопоставление типов файлов»). При поиске любого из пунктов меню помните, что они содержат подчеркнутые символы для обозначения клавиши быстрого доступа, хотя Windows 7 и не отображает их по умолчанию. Например, меню Datasheet хранится в реестре как Data&sheet. Знак & в Data&sheet дает указание системе Windows подчеркнуть символ, следующий за ним («s» в данном случае), то есть в строку поиска необходимо включить символ &. Если этого не сделать, поиск вам не поможет.

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

О Имена файла и папки

Несмотря на то что длинные имена файлов (длиннее, чем архаичный стандарт

8-точка-З) широко использовались на компьютерах больше десятилетия до появления Windows 7, короткие имена файлов все еще имеют значение в современной Windows, особенно в реестре. Например, путь папки C:Program Files в короткой форме 8.3 будет выглядеть как C:PROGRA~l. (См. «Продвинутые настройки NTFS», чтобы узнать о создании коротких имен файлов.)

Даже Microsoft все еще продолжает использовать короткие имена файлов. Так, при установке Office 2007 в реестре появляется значение C:PROGRA~lMICROS~2 Officel21033ACCESS12.ACC.

К сожалению, это означает, что необходимо искать и длинную и короткую версии имени файла или папки, если вы хотите найти их все. Предположим, что вы хотите переместить папку Program Files с одного диска на другой. Настройки путей к этой папке могут храниться в реестре как C:Program Files или как C:Progra~l. Убедитесь, что вы ищете оба варианта.

При поиске Program Files и Progra~l достаточно ввести progra, и вы найдете оба варианта. Учтите, что поиск начнет натыкаться на другие упоминания слова { •» program, поэтому попробуйте ограничить результаты, добавив обратную косую черту перед текстом (progra).

О DLL, классы, компоненты, расширения и CLSIDs

Windows и все приложения состоят из маленьких строительных кубиков, которые называют классами, расширениями или объектами. Я избавлю вас от рассуждений по поводу COM-компонентов, архитектуры .NET и от других жаргонных слов. Достаточно сказать, что большинство этих кубиков зарегистрированы в ветви реестра HKEY_CLASSES_ROOTCLSlD и распознаются по шестнадцатеричному коду CLSID (идентификатор класса): {AC0EEBCA-73FA-4EB3-87FF-96E58401FA1F}

Почему это важно? Это означает, что можно проследить, где класс упоминается (другими словами, как он используется в Windows) и где он зарегистрирован. Все это можно сделать, исследовав реестр на идентификатор класса.

Например, данные конфигурирования для вышеуказанного класса находятся в HKEY_CLASSES_ROOTCLSID{AC0EEBCA-73FA-4EB3-87FF-96E58401FA1F}

Если компонент не работает, то можно попробовать устранить или диагностировать проблему, изменив значения в этом разделе. Если удалить этот раздел, произойдет отказ регистрации класса. Чтобы отключить поддержку «сжатых папок» (ZIP-файлы, выглядящие как папки в Проводнике), необходимо удалить две ветви идентификатора класса (см. главу 2).

* ‘ Используете 64-битную Windows? 64-битные классы не там, где 32-битныс, _»

подробнее об этом см. «Системный реестр в 64-битной Windows*.

ЗАРЕГИСТРИРОВАННЫЕ И НЕЗАРЕГИСТРИРОВАННЫЕ КОМПОНЕНТЫ

В Windows есть специальная программа, regsvr32.exe, которую можно использовать для ручной регистрации или отказа от регистрации. Вы можете исправить ветвь GLSID для конкретного компонента, введя в окно командной строки

regsvr32 "с: program filesmy appsome file.dll"

Вы можете удалить все записи, которые использует конкретная DLL:

regsvr32 /и "c:programfilesmy appsomefile.dll"

Обнаружили, что стали слишком часто пользоваться этой возможностью? Добавьте два новых действия в контекстное меню для .dll-, .ах- и .осх-тнпов файлов - одно, чтобы зарегистрировать, а второе — чтобы отказаться от регистрации.

Если идентификатор класса найден в другом месте (внутри другого раздела HKEY_ CLASSES_ROOTCLSID), значит, программа, к которой относится этот раздел, использует данный компонент. Если вы удалите ссылку, то уничтожите связь.

Поиск и замена данных реестра

В редакторе реестра нет поиска с заменой по веской причине — одна-единственная операция замены могла бы сделать систему неработоспособной. Но иногда случается так, что необходимо заменить все упоминания папки C:Program FilesMy Program на D:my Folder. В зависимости от количества таких элементов операция может длиться несколько часов.

Агент реестра не только предоставляет улучшенные возможности для поиска в реестре (результаты будут показаны в виде списка), но также поддерживает операции поиска и замены. Попробуйте переместить приложение с одного диска на другой без переустановки:

1. Откройте в Панели управления Creative Element Power Tools и нажмите на Start Registry Agent now.

2. Введите текст для поиска (например, C:program filesacme) и начните поиск. Обратите внимание на то, что для поиска текста, содержащего обратную косую черту, необходимо отключить опцию Keys, так как имена разделов реестра не могут содержать обратную косую черту.

3. Результаты показаны в виде таблицы с тремя колонками (рис. 3.8), Левая колонка показывает раздел, где был найден текст. Вы можете щелкнуть на ней, чтобы открыть редактор реестра в нужном месте. Остальные колонки показывают имя и значение параметра.

4. Выберите закладку Replace.

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

5. Пометьте элементы, которые вы собираетесь заменить.

6. Введите новый текст (например, D: ew acme).

7. Выберите, что именно вы хотите заменить, с помощью опций Keys, Values и Data. Обратите внимание на то, что окошко Keys по умолчанию отключено из соображений безопасности. Нажмите кнопку Help, чтобы узнать, как снять это ограничение.

*

— Замену невозможно отменить, а это значит, что если вы что-то не так сделали, ^ % то единственный способ вернуть все назад — это восстановление реестра из ре-М?» 4 «4 зервной копии. Хотите совет? Воспользуйтесь вкладкой Export для сохранения -файла реестра, чтобы использовать его для восстановления реестра.

8, Нажмите кнопку Replace.

Расположение раздела настроек реестра

Теперь вы знаете, как изменить элемент в реестре, но как узнать, какой элемент нужно менян»?

Иногда это очевидно. Например, вы хотите уменьшить время запуска любимого приложения, и вам кажется, что можно отключить заставку программы (дружелюбный логотип, на который вы смотрите, пока программа загружается, но который требует определенного времени для своей загрузки). В разделе реестра HKEY_Current_UserSoftware есть параметр с именем ShowSplashScreen. Вы можете его включить (значение 1) или выключить (значение 0).

т

I Ноль и один не всегда соответствует выключению н включению, иногда

I имя значения инвертирует смысл: например, если присвоить параметру DontShowSplashScreen значение 1, то, скорее всего, вы отключите свойство ShowSplashScreen.

Все не так легко, как кажется. Вы можете увидеть длинные, ничего не значащие числа и буквы. Хотя и не существует строгих правил того, как должны быть названы значения и разделы или организованы данные, есть способ, который можно использовать, чтобы выяснить, как нужная вам настройка хранится в реестре.

В чем же смысл? Когда вы ищете значения реестра, ответственные за определенную настройку, вы сталкиваетесь с несколькими задачами:

О Как найти спрятанные настройки

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

О Как воспроизвести настройки

Найдя разделы и значения, ответственные за настройки, можно объединить их в файл для коррекции реестра, а затем использовать на другом компьютере. Это пригодится сетевым администраторам и разработчикам программного обеспечения.

О Как ввести значения, не разрешенные программным обеспечением

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

О Как выполнить настройку при сбоях программного обеспечения

Если приложение не сохраняет нужные параметры в реестре, это можно исправить вручную, если знать, где именно они хранятся.

О Как запретить изменения некоторых настроек

Некоторые программы, включая Windows 7, «забывают» настройки, возвращаясь к значениям, установленным по умолчанию, без очевидной причины. Но как только вы узнаете, где хранится информация, вы сможете изменить разрешения (об этом немного позже), чтобы предотвратить дальнейшие изменения без вашего согласия.

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

1. Закройте все приложения, кроме того, которое хотите проверить. Любые ненужные работающие приложения — включая те, которые находятся в области системных уведомлений, — могут менять информацию в реестре в любое время, внося неожиданные изменения.

2. Откройте редактор реестра и выберите ветвь HKEY_CURRENT_USER.

3. Сделайте Экспорт (Export) из меню Файл (File). Введите имя файла Userl. reg и сохраните его в любом удобном для вас месте.

4. Затем выберите ветвь HKEY_L0CAL_MACHINE и повторите шаг 3, сохранив файл под именем Machinel. reg.

5. Выполните изменение, которое хотите отследить.

Например, вы хотите найти значение, ответственное за показ скрытых файлов в Проводнике. В этом случае вы идете в Панель управления ? Параметры папок, выбираете вкладку Вид и в списке Дополнительные параметры включаете параметр Показывать скрытые файлы, папки и диски и нажимаете ОК.

6. Перед тем как сделать что-нибудь еще, переключаетесь обратно в редактор реестра и снова экспортируете ветви HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE в новые файлы, названные User2.reg и Machine2.reg соответственно, как описано ранее в шагах 2 и 3.

Итак, сейчас есть два снимка ветвей реестра, сделанные до и после изменений. Важно, что снимки сделаны сразу же до и после изменений так, что другие незначительные настройки, такие как изменения расположения окон, не включены в интересующие нас изменения.

7. Все, что необходимо сделать сейчас, — это «перегнать» измененную инфор-мацию в нужный формат. В Windows для сравнения файлов есть специальная утилита командной строки — fc.exe.

Есть несколько сторонних программ для Windows, которые проще и удобнее ис-*пользовать, например UltraEdit. Даже Microsoft Word умеет сравнивать тексты ' j v (только помните, что сохранять результаты нужно как обычный текст).

Откройте окно командной строки (введите cmd в поле поиска меню Пуск и нажмите Enter), а затем используйте команду cd для указания папки, в которой сохранены файлы реестра. Если вы сохранили их на Рабочий стол, введите

cd%userprofile%desktop

8. Для операции сравнения введите следующие две строки:

fc /и userl.reg user2.reg > user.txt

fc /и machinel.reg machine2.reg > machine.txt

Утилита просканирует две пары файлов и выдаст различия. Знак > определяет вывод данных в текстовый файл user.txt для изменений в HKEY_CURRENT_USER и в текстовый файл machine.txt для изменений в HKEY_L0CAL_MACHINE.

9. Проверьте результаты. Файл user.txt должен выглядеть примерно так:

Comparing files userl.reg and USER2.REG ***** userl.reg

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion Explorer Advanced]

"Hidden"=dword:00000001 " ShowCompColo r" =dword: 00000000 ***** USER2.REG

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion

Explorer Advanced]

"Hidden"=dword:00000002 "ShowCompColor"=dword: 00000000 *****

Из этого листинга можно увидеть» что изменилось только значение Hidden, находящееся где-то в ветви HKEY_CURRENT_USER. (Могут быть и другие изменения, но если вы их внимательно изучите, то обнаружите, что они могут быть проигнорированы.)

Обратите внимание, что для настройки, описанной на шаге 5, не было зафиксировано изменений в ветви HKEY_LOCAL_MACHINE, поэтому machine.txt содержит единственное сообщение: «FC: No differences encountered». Это означает, что изменения затронули только ветвь HKEY_CURRENT_USER.

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

я

-

м**.,

-

В рассматриваемом случае значение, которое изменилось, находилось в HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion ExplorerAdvanced. Если вы посмотрите на этот раздел, то увидите, что он содержит и другие настройки, отсутствующие в диалоговом окне Параметры папок.

Если строки в квадратных скобках рядом нет, придется провести небольшой поиск. Для этого откройте один из исходных файлов (Userl.reg, User2. reg, Machinel.reg, Machine2.reg) и найдите строку, обнаруженную на шаге

9. Для этого примера найдите User2. reg "Hidden"=dword .*00000002, а затем поищите строку, помещенную в квадратные скобки ([...]), выше измененной строки. Она является названием раздела, содержащего значение Hidden.

*2s

-*7 Иногда изменения настроек приводят к созданию или удалению значения (или

раздела) реестра, то есть целый раздел может присутствовать только в одном ^ J из двух сохраненных файлов реестра. В этом случае вам, возможно, придется

* немного «покопаться» или попытаться настроить режим сравнения файлов для более легкого использования результатов сравнения.

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

Удалите все строки из файла user.txt, кроме результата изменений. В итоге получится что-то похожее на это:

"Hidden"=dword:00000002

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

[HKEY_CURRENT_USERSoftwareMicrosof t:WiridowsCurrentVersion Ехр1огег Advanced]

"Hiddenн=dword:00000002

И наконец, добавьте в начало файла текст: Windows Registry Editor Version

5.00, за которым должна следовать пустая строка:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion Explorer Advanced]

"Hidden"=dword:00000002

По окончании сохраните его как новый файл с расширением имени файла .reg (например, My Neato Setting.reg).

Если изменения повлияли на ветвь HKEY_LOCAL_MACHINE, повторите этот шаг и для файла machine.txt. Можно объединить оба файла в один, но строка Windows

* j ? Registry Editor Version 5.00 должна остаться в единственном экземпляре.

Для некоторых настроек (как в нашем примере) необходимо сделать два файла реестра: первый — чтобы включить настройки, а второй — чтобы их выключить. Теперь для изменения настроек вам достаточно дважды щелкнуть мышкой на нужном файле.

Создание интерфейса для настроек реестра

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

Зачем вам это делать? Возможно, из-за настроек реестра, которые вы часто меняете, или, возможно, вы администрируете здание, полное компьютеров и вам хотелось бы показать какое-то свойство пользователям остальных компьютеров, но вы не хотите, чтобы они сами как-то вмешивались в работу реестра. (Или, наоборот, есть настройки, которые вы хотели бы спрятать от остальных пользователей.)

Зайдите в Панель управления ? Параметры папок ? Вид. С первого взгляда может показаться, что список дополнительных параметров представлен в неудобном формате (рис. 3.9), очевидно, что можно было бы разместить большее количество параметров. Однако это далекое от идеала представление способно подстраиваться под требования заказчика, разрешая Microsoft (или вам) легко добавлять или удалять элементы.

Вы, наверное, предположили, что Microsoft не сделала список параметров настраиваемым только для того, чтобы вы не смогли вмешаться в работу Windows. Этот список сделан гак, чтобы его можно было приспособить к разнообразным настройкам версий Windows (фактические параметры, представленные в нем, зависят от версии Windows 7). Но это не значит, что вы не можете его изменять.

Вы можете присоединить флажок или переключатель к любому параметру в реестре. Это позволяет делать изменения в реестре, без необходимости вмешиваться в его работу. А если вы являетесь разработчиком программного обеспечения, то можете добавить в это окно параметры собственной программы. Или получить простой доступ к спрятанным настройкам Windows, которые часто меняете.

Формат записи довольно хорошо продуман, так что вам не нужно быть программистом, чтобы его использовать. Вы можете добавить параметры в определенный раздел реестра, а затем привязать их к значениям из реестра. Вот как следует это делать:

1. Откройте редактор реестра.

2. Перейдите к HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion ExplorerAdvancedFolder.

Посмотрите на разделы внутри раздела Folder. Иерархическая структура воспроизведена в реестре, хотя элементы списка M017T появляться в порядке, отличном от их представления в реестре. Так получается из-за того, что названия в списке параметров папок не обязательно должны совпадать с названиями соответствующих разделов реестра, хотя в обоих случаях названия будут расположены в алфавитном порядке.

3. Воспользуйтесь возможностью выполнить резервное копирование всей ветви, выделив раздел Folder. Таким образом, можно будет проще восстановить значения по умолчанию без переустановки Windows.

4. На этом шаге вы можете убрать любые ненужные элементы, удалив соответствующие разделы из этой ветви. Значения параметра Text должно быть достаточно, чтобы пояснить, для чего он нужен.

5. Для добавления нового элемента необходимо создать новый раздел внутри раздела Folder. Назовите его любым осмысленным именем, не совпадающим с существующими именами разделов.

Некоторые настройки разделены на группы, например Скрытые файлы и папки, 0%^ содержащие переключатель. Группа — это раздел в реестре, такой как раздел Ф Hidden, который может содержать два или более подраздела. В групповом разделе необходимо задать заголовок и изображение значка, а затем указать в параметре Туре значение group. Поместите все необходимые элементы в этот подраздел. Если вы запутались, то используйте раздел Hidden в качестве образца.

6. Значения внутри каждого раздела определяют свойства соответствующей настройки.

Начните с добавления нового строкового значения для параметра Text, дважды щелкните на нем мышкой, чтобы ввести заголовок нового элемента. Теперь добавьте еще одно строковое значение с именем Туре и введите либо group, либо checkbox, либо radio. Эти значения определяют внешний вид новой настройки (табл. 3.2).

Таблица 3.2. Визуальные свойства элементов ИмязначенияТипданныхОписание содержания значения ТуреСтрокаПараметр может принимать значение group, checkbox или radio, соответствующее папке, флажку или переключателю. Флажок — это «квадратик» меню, который может быть либо включен, либо выключен. Переключатель — «кружочек» меню, только один пункт внутри этой папки может быть выбран (существуют составные группы переключателей). Папки используются и для организации других параметров. Параметр Туре требуется всем элементам Имя Тип Описание содержания значения значения данных_ TextСтрокаЭто заголовок параметра, появляющийся в диалоговом окне. Он может быть каким угодно, но первое слово нужно написать с про-писной буквы, а точку не ставить. Параметр Text требуется всем элементам BitmapСтрокаПараметр определяет изображение, используемое для элементов папки. Если его не указать, на месте рисунка появится некрасивая изогнутая стрелка. Формат записи — filename, index, где filename — это полный путь и имя файла, содержащего изображение, a index— это номер изображения (если файл содержит более одного изображения). Для отображения знакомой желтой папки введите значение %SystemRoot%system32Shell32.dll,4- Этот параметр не влияет на флажки и переключатели HelpIDСтрокаПараметр указывает на документацию для соответствующего элемента. Если выбрать элемент и нажать F1, то этот параметр найдет нужную подсказку. Формат записи — filename#id, где filename — это имя файла .hip или .chm, a id — это числовой идентификатор подсказки, которую вы хотите вывести на экран. Чтобы показать оглавление справочного файла, следует опустить параметр id

7. Добавьте элементы (табл. 3.3) в соответствующий раздел реестра. Для настройки переключателя и флажка вам потребуются HKeyRoot, RegPath, ValueName и CheckedValue. (Этот шаг можно пропустить, если элемент является группой.)

Таблица 3.3. Свойства элементов, связанные с реестром Имя значенияТипданныхОписание содержания значения HKeyRootDWORDЧисло, соответствующее пути в реестре. Используйте шестнадцатеричное число 80000000 для HKEY_ CLASSES_ROOT, 80000001 для HKEY_CURRENTJJSER, 80000002 для HKEY_LOCAL_MACHINE, 80000003 для HKEYJJSERS, 80000005 для HKEY_CURRENT_CONFIG. Параметр должен быть задан отдельно от пути, указанного в RegPath. Параметр обязателен для всех флажков и переключателей RegPathСтрокаПуть, описывающий нахождение параметра в реестре без учета корневого каталога (см. HKeyRoot). Для раздела HKEY_CURRENT_USERSoftwareMicrosoftWindows CurrentVersion достаточно указать Software MicrosoftWindowsCurrentVersion. Параметр обязателен для всех флажков и переключателей ValueNameСтрокаИмя параметра. В этом параметре хранится информация о том, включена или выключена опция в окне Параметры папок. Путь к разделу, содержащему это значение, задан параметрами RegPath и HKeyRoot Параметр обязателен для всех флажков и переключателей продолжение iP Таблица 3.3 (продолжение) Имя значенияТипданныхОписание содержания значения CheckedValueДолженсоответствоватьпараметруПараметр удерживает информацию о том, включен ли параметр, чтобы сохранить ее в реестре (заданном параметрами RegPath и ValueName). Если вы задаете параметр для Windows 9х/Ме и Windows 7/2000, используйте вместо этого значения параметры CheckedValueW95 и CheckedValueNT. Параметр обязателен для всех флажков и переключателей CheckedValueW95ДолженсоответствоватьпараметруПараметр заменяет CheckedValue, если вы описываете параметр, который будет использоваться и в системе Windows 9х/Ме, и в системе Windows 7/2000. Это значение содержит информацию, которая будет использована при запуске Windows 9х/Ме. Используется в паре с CheckedValueNT CheckedValueNTДолженсоответствоватьпараметруПараметр заменяет CheckedValue, если вы описываете параметр, который будет использоваться и в системе Windows 9х/Ме, и в системе Windows 7/2000. Используется в паре с CheckedValueW95 UnCheckedValueДолженсоответствоватьпараметруПараметр удерживает информацию, чтобы сохранить ее в реестре, когда опция выключена. Параметр может отсутствовать, при этом предполагается, что он равен нулю DefaultValueДолженсоответствоватьпараметруДанные, которые Windows присваивает, если в окне Параметры папок была нажата кнопка Восстановить значения по умолчанию. Параметр может отсутствовать, при этом предполагается, что он равен нулю т

9. Закройте редактор реестра.

В следующий раз, когда вы будете открывать диалоговое окно Параметры папок, текущая информация будет сравниваться с CheckedValue и UnCheckedValue и список Дополнительных параметров будет настроен в соответствии с вашими пожеланиями. Другими словами, если вы все сделали правильно, каждый параметр в Дополнительных параметрах должен правильно отражать свое текущее состояние. Измените настройки, нажмите ОК, и соответствующие параметры будут прописаны в реестре.

Для воспроизведения настройки в любом другом месте в интерфейсе Windows или в интерфейсе другого приложения необходимо найти соответствующий раздел реестра, как описано в разделе «Расположение раздела настроек реестра».

Экспорт и импорт файлов реестра

Ввод данных в реестр — очень нудная задача, особенно если кнопка N на клавиатуре не работает. Но, слава богу, это не единственный способ добавления разделов и значений в реестр.

Файл реестра — это обычный текстовый файл с расширением .reg, который содержит одни или более чем один раздел или значение реестра. Двойной щелчок мышью на файле .reg запустит редактор реестра, который «свяжет» содержимое файла с реестром.

Такие файлы хорошо подходят для выполнения резервного копирования небольших частей реестра, для копирования настроек или разделов реестра на другие компьютеры.

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

Создание файла реестра

1. Откройте редактор реестра и найдите ветвь, которую хотите экспортировать.

Эта ветвь может находиться где угодно, она может быть самой верхней либо спрятанной на десяток уровней в глубину Файл исправления реестра включает о J •, себя не только выбранную ветвь, но и все значения и подразделы. Не используйте •' больше, чем вам на самом деле необходимо.

2. В меню Файл (File) выберите Экспорт (Export), укажите имя файла, выберите папку назначения и нажмите ОК. Все значения и подразделы выбранной ветви будут сохранены в этом файле. Убедитесь, что имя файла имеет расширение .reg.

Больше мне сказать нечего по поводу того, как делать файлы реестра. Гораздо интереснее их изменять или создавать с нуля.

Редактирование файла реестра

Поскольку файл реестра — это просто обычный текстовый файл, его можно редактировать в любом текстовом редакторе. Содержание файла будет похоже на текст, показанный в примере 3.1.

Пример 3.1. Содержание файла реестра, созданного из HKEY_CLASSES_ROOT.txt

Windows Registry Editor Version 5.00 [ HKEY__CLASSES_ROOT. txt ]

@="txtfile"

"PerceivedType"="text"

"Content Type"="text/plain"

[HKEY_CLASSES_ROOT.txtShellNew]

,,ItemName"=,,@%SystemRoot%system32 otepad.exe, -470"

"NullFile,,=M"

Первая строка, Windows registry Editor Version 5.00, сообщает Windows, что данный файл является файлом реестра. Не удаляйте эту строку. Остальная часть файла -это имена разделов и значения.

ОБРАТНАЯ СОВМЕСТИМОСТЬ

Файлы реестра Windows 95, 98 или Me могут быть импортированы в Windows 7 без проблем (если не обращать внимания на странные параметры, содержащиеся там).

Однако обратный процесс не так прост. Файлы реестра, сделанные в Windows 7, Vista, ХР, 2003 и 2000, используют кодовые таблицы Unicode и имеют заголовок, показывающий, что их версия не подходит для старого редактора реестра. Чтобы использовать такой файл в Windows 9х/Ме, вам необходимо будет решить две задачи.

Во-первых, заменить заголовок Windows Registry Editor Version 5.00 на REGEDIT4.

Затем нужно конвертировать файл .reg из Unicode в ASCII, чтобы предыдущие версии Windows могли его понять. Откройте этот файл в текстовом редакторе, в меню Файл (File) выберите Сохранить как (Save as), укажите новое имя, а затем выберите кодировку ANSI и сохраните файл.

Имена разделов указаны в скобках ([-.]) и определяют полный путь раздела, в котором должны храниться значения, приведенные далее. В каждой строке сначала указано имя значения (в кавычках), за которым следует знак равенства, а затем данные, хранящиеся в значении (также в кавычках). Имя @ указывает реестру поместить данные в значение (По умолчанию) ((Default)) (см. четвертую строку примера 3.1).

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

Зачем же нужно редактировать файлы реестра? Изменить значения реестра намного проще при помощи текстового редактора, а не редактора реестра, так как вам не нужно открывать, а затем закрывать значение каждого параметра.

Возможно, вы захотите быстро выполнить операцию поиска и замены в текстовом редакторе, а йотом применить эти изменения. Будьте осторожны, так как может произойти не то, чего вы ожидаете. Если вы измените шя параметра (слева от знака «равно») или имя раздела (строки в скобках), то ири импорте в реестр будут созданы новые параметры и разделы с именами, которые были указаны в файле, а старые параметры и разделы останутся на месте неизменными. Лучший вариант — использование Агента реестра, описанного в разделе «Поиск и замена данных реестра».

Особых требований по расположению разделов в файле реестра нет. Это означает, что можно комбинировать несколько файлов реестра в один и использовать их для восстановления любого количества разделов за один раз. Все, что нужно, — это скопировать и объединить текст отдельных файлов в один. Единственное, что следует сделать, кроме проверки того, что все разделы и параметры не пострадали, — это удалить все лишние строки Windows Registry Editor Version 5.00.

Если вы создаете файл реестра, который будет использоваться на других компьютерах, убедитесь, что полные имена путей указаны правильно. Если, например, в файле реестра использована ссылка D:Windows otepad.exe, она вызовет про-блемы на любом компьютере, где файл notepad.exe находится в папке С: WindowsV Лучше всего использовать расширенные строковые значения вместе с системными переменными, например: %SystemRoot% otepad.exe. Поскольку расширенные строковые параметры хранятся в бинарном виде в файлах реестра, то такая запись будет выглядеть следующим образом:

"0pen"=hex(2) : 26,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,

74.00.25.00.5c,00,6e, 00,6f,00,74,00,65,00,70,00,61,00,64,00,2e, 00,65,00,

78.00.65.00.00.00

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

Удаление разделов и значений с помощью реестра

Хотя редактор реестра не создает файлов для удаления разделов или значений реестра, такой файл легко сделать вручную. Для того чтобы удалить раздел при помощи файла реестра, поставьте знак «минус» перед именем раздела:

-[HKEY_CURRENT_USERControl Paneldon’t load]

После использования файла удаляются раздел и все его значения вместе со всеми подразделами. Чтобы удалить одно значение из раздела, поставьте знак «минус» после знака равенства:

[HKEY_CURRENT_USERControl Paneldon’t load]

"desk.cpl”=-

Эти методы работают, только если у вас есть обоснованная причина для удаления этих разделов. Подробнее об этом в разделе «Как запретить изменения в разделе реестра».

Использование файла реестра

Для копирования информации из файла обратно в реестр его необходимо применить. Самый легкий способ сделать это — дважды щелкнуть мышкой на названии файла (неважно, запущен редактор реестра или нет).

Если на этой стадии вы видите подсказку, нажмите Продолжить. Отвечайте Да на вопрос, хотите ли вы добавить информацию из файла в реестр, и, наконец, нажмите ОК, когда увидите сообщение «Информация из MyPatch.reg была успешно внесена

в реестр». (Файл реестра можно применить и из редактора реестра, в меню Файл (File) выберите Импорт, найдите файл реестра и нажмите ОК.)

Чтобы применить файл реестра без излишних предупреждений, необходимо

I использовать командную строку В открытом окне Командной строки либо при j помощи меню Пуск ? Выполнить введите следующий текст:

regedit /s C:foldermypatch.reg

где С: f oldermypatch. reg — это полный нугь и имя импортируемого файла реестра.

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

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

Как запретить изменения в разделе реестра

Слово «безопасность» всегда было излюбленным термином компании Microsoft, и это не изменилось с появлением Windows 7. Настройки безопасности Windows оказываются более полезными при защите компьютера от самого себя, чем от любых подозрительных «злоумышленников».

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

Вот как это делается:

1. Откройте редактор реестра и перейдите к разделу, который вы хотели бы защитить.

t*r-

Вы можете защищать только разделы, а не отдельные значения. Если вы заблокируете раздел для защиты одного из его значений, все значения в этом разделе

j ? будут заблокированы.

2. Щелкните правой кнопкой мышки на имени раздела и выберите пункт меню Разрешения.

3. Нажмите Дополнительно, а затем Добавить.

t*r-

Если кнопка Добавить неактивна, вам необходимо взять этот раздел «в собствен* Л •, I ность», закрыть окно Разрешения и повторно открыть его для внесения изменений ^ ? в права доступа для этого объекта.

4. В поле Введите имена объектов напечатайте Все, а затем нажмите ОК. (Значение Все охватывает учетные записи всех пользователей.)

5. В следующем окне Ввод права доступа для... укажите действия, которые вы хотите запретить (рис. 3.11).

6. Когда все готово, нажмите ОК в каждом из трех открытых диалоговых окон.

Изменения вступят в силу сразу же.

Возможно, вам понадобится ограничить права доступа определенного пользователя (или всех пользователей), но не добавлять элемент Запретить, как показано на рисунке. Проблема заключается в том, что таким способом не защитить приложение от изменений прав доступа другим пользователем и взлома. К тому же вам будет сложнее восстанавливать старые права доступа.

Windows дает приоритет столбцу Запретить над столбцом Разрешить, что означает возможность заблокировать раздел при помощи одного элемента столбца Запретить, даже если другое значение в столбце Разрешить дает пользователю разрешение на видоизменение элемента.

Итак, какие же разделы нужно блокировать и какие действия запрещать? Вот несколько примеров:

О Разрешите только чтение

После блокировки значений все же можно позволить приложениям и Windows их считывать, поставив флажок в столбце Запретить напротив строк Задание значения, Удаление и Смена владельца, как показано на рис. 3.11.

О Создайте полную блокировку

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

О Избегайте создания новых оболочек

Чтобы приложения не создавали новые разделы внутри указанных, поставьте флажок в столбце Запретить напротив строки Создание подраздела. Так можно поступить с разделами типа файла, чтобы Проводник не добавлял эти приложения в список Создать.

О Укрепите безопасность на многопользовательских компьютерах

Чтобы другой пользователь не смог изменить политику безопасности, используйте процедуру, описанную в разделе «Расположение раздела настроек реестра», чтобы найти соответствующий раздел в реестре. Затем, вместо того чтобы поставить флажок в столбце Запретить, как это описано ранее, отмените все права доступа, которые позволяют кому-либо, кроме администратора, удалять, изменять или добавлять подразделы в раздел. Убедитесь, что существует по крайней мере одно правило для группы Администраторы (или для собственного аккаунта), которое разрешает Полный доступ.

О Блокировка типов файла

Утилита File Type Doctor позволяет блокировать типы файлов, чтобы избежать «кражу» их приложениями.

О Защита типов файлов от свойства UserChoice

Как описано во врезке «Зло переопределения UserChoice» на с. 169, Windows проигнорирует настройки пользовательского типа файла, если определенный раздел находится в HKEY_CURRENT_USERSoftwareMicrosoftWindows CurrentVersionExplorerFileExts разделе. Чтобы такое не случилось снова, поставьте флажок в столбце Запретить напротив строки Создание подраздела. Это сразу же защитит все ваши типы файла, но еще необходимо будет удалить один или более из существующих элементов в разделе FileExts для восстановления индивидуальных типов файла. Подробнее об этом в разделе «Сопоставление типов файлов».

Резервное копирование реестра

В некотором смысле реестр Windows — слабое звено в стабильности и устойчивости операционной системы. Его удивительно легко повредить, но очень трудно восстановить. И если вы не создадите собственную резервную копию, вам будет нелегко восстановить реестр в случае повреждения (в отличие от, скажем, DLL, которые можно взять непосредственно с установочного диска Windows). Испорченный реестр может привести к сбоям в работе Windows или вообще стать препятствием к запуску Windows.

Защита Системы (или Восстановление Системы) находится в Панели управления Система ? Защита системы (Control Panel ? System ? System Protection). Windows авто* матически создает точку восстановления один раз в день плюс каждый раз при установке приложения, драйвера устройства или любого обновления из Windows Update. Точки восстановления содержат основные системные файлы Windows и настройки реестра, хотя не ясно, насколько большая часть реестра копируется, а также невозможно восстановить только реестр — частично или полностью.

л

_I

Итак, в чем же проблема? Почему бы не заархивировать файлы реестра или не скопировать их на компакт-диск? Проблема в том, что в файлах, содержащих данные реестра (называемые кустами), постоянно происходит чтение и запись, поэтому Windows блокирует их, чтобы обезопасить от изменений, удаления и даже прямого чтения. (Хотя можно скопировать файл куста HKEY_CURRENT_USER, если выйти из системы, а затем войти в нее как другой пользователь.)

Это означает, что, если вы хотите создавать и восстанавливать резервные копии по своему желанию, необходимо использовать процедуру, подобную описанной ниже. Вы можете захотеть сделать это, например, непосредственно перед тем, как установить новую программу или драйвер устройства:

1. Откройте редактор реестра и закройте все ветви так, чтобы были видны только пять главных разделов корня.

2. Выделите HKEY_CURRENTJJSER.

3. Из меню Файл (File) выберите Экспорт (Export).

4. Из списка Тип файла (Save as type) выберите Файлы кустов реестра (*.*) (registry Hive Files).

5. Введите имя файла и дайте ему расширение .hive (например, hkcu.hive). RegEdft не будет делать это за вас, a Windows по умолчанию не распознает расширение .hive, но вам будет намного легче идентифицировать файлы, чем если бы у них не было никакого расширения, что является вариантом по умолчанию.

6. Выберите папку, в которой вы сохраните резервную копию, и щелкните Сохранить (Save).

7. Затем следует ветвь HKEY_LOCAL_MACHINE. Хотя редактор реестра позволит вам экспортировать все эти ветви в куст, можно экспортировать туда отдельные подветви. Просто повторите шаги 3-6 для этих разделов и соответствующих имен целевых файлов:

HKEY_LOCAL_MACHINEHARDWARE ? hklm hardware.hive HKEY_LOCAL_MACHINESAM ? hklm saro.hive HKEY_LOCAL_MACHINESECURITY ? hklm security.hive HKEY_LOCAL_MACHINES0FTWARE ? hklm software.hive HKEY_LOCAL_MACHINESYSTEM ? hklm system.hive

8. Чтобы восстановить любую или все резервные копии и заменить текущий реестр данными из резервных файлов, выберите Импорт (Import) из меню Файл (File) редактора реестра. Выберите Файлы кустов реестра (*.*) (registry Hive Files) из непомеченного поля списка рядом с полем Имя файла (File name), задайте .hive-файл для импорта и щелкните Открыть(Ореп).

ЛОКАЛЬНОЕ РЕЗЕРВНОЕ КОПИРОВАНИЕ

Самый простой тип резервного копирования реестра - это локальное резервное копирование (похоже на местное обезболивание). Вместо того чтобы копировать иесь реестр, вы просто копируете ту часть, с которой будете продолжать работать. Если вы что-то испортили, можно быстро и легко восстановить затронутые разделы, не касаясь ничего больше.

Например, вы хотите произвести изменения в разделе HKEY_CURRENT_USER SoftwareMicrosoftWindowsCurrentVersionRun, который отвечает за выполнение программ ири запуске Windows. Просто откройте редактор реестра, перейдите к этому разделу и выберите Файл (File) ? Экспорт (Export). Введите имя файла и сохраните файл заплатки реестра на Рабочем столе. (См. «Экспорт и импорт файлов реестра.)

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

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

Прежде чем вы произведете любые изменения в реестре, сделайте файл реестра, как описано выше. Затем переименуйте раздел, в котором вы будете работать, добавив . backup в конец имени раздела. Например, если вы хотите произвести изменение в разделе:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

выделите раздел Run, нажмите кнопку F2 (или щелкните правой кнопкой и выберите Переименовать (Rename)) и поменяйте имя на Run.backup.

Затем сразу импортируйте только что сделанный файл реестра и сотрите этот файл реестра. У вас получатся два идентнчных раздела друг рядом с другом:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun.backup

Теперь можно действовать: портить раздел Run до вашего полного удовлетворения и даже использовать лежащий рядом раздел Run.backup как удобную справку. Если вы когда-либо должны восстанавливать ваше резервное копирование — сегодня или спустя шесть месяцев, просто сотрите раздел Run и переименуйте Run.backup, обратно в Run.

См. главу 2 о быстром способе сделать локальное резервное копирование файлов, с которыми вы работаете.

Две вещи, которые необходимо отметить относительно этой процедуры резервного копирования. Дело в том, что файлы кустов реестра являются двоичными файлами, такими же, как и те, которые Windows использует ежедневно для хранения реестра. Если же экспортировать обычные файлы реестра — те, что вы получили бы, если бы выбрали на шаге 4 Файлы реестра (*.reg), — то они имеют текстовый формат и не могут быть легко восстановлены обратно в реестр. Это происходит потому, что редактор реестра объединяет файлы реестра с уже существующими данными, которые могут не затронуть ошибочные данные, как описано в разделе «Экспорт и импорт файлов реестра». Но если редактор реестра импортирует файлы куста, то он стирает существующие разделы из реестра перед размещением новых (сохраненных) данных.

Заплатки реестра могут быть удобны для того, чтобы восстанавливать отдельные разделы, как объяснено во врезке на с. 151.

Заметьте, что обсуждается только резервное копирование ветвей HKEY_CURRENT_USER И HKEY_LOCAL.MACHINE, a HKEY_CLASSES_ROOT, HKEYJJSERS и HKEY_CURRENT_CONFIG остаются с виду незащищенными. Это делается, потому что данные в НКЕY_CLASSЕS_R00T и HKEY_USERS дублируются в первых двух корневых разделах (HKLM и HKCU соответственно), a HKEY_CURRENT_CONFIG динамически сгенерирован и не сохраняется на жестком диске вообще. Для получения подробной информации см. «Структура реестра».

Почему важно знать, как Windows хранит данные реестра? Потому что если вы примените немного более усовершенствованный подход при копировании реестра1 у вас будет резервная копия, которую можно будет восстановить, даже если Windows не будет запускаться. Вот как это делается:

1. Откройте простой текстовый редактор, например Блокнот (Notepad).

2. Введите следующее в пустой документ:

if exist C:BackupsCOMPONENTS.OLD del C:BackupsCOMPONENTS.OLD

if exist C:BackupsSAM.OLD del C:BackupsSAM.OLD

if exist C:BackupsSECURITY.OLD del C:BackupsSECURITY.OLD

if exist C:BackupsSOFTWARE.OLD del C:BackupsSOFTWARE.OLD

if exist C:BackupsSYSTEM.OLD del C:BackupsSYSTEM.OLD

if exist C:BackupsNTUSER.OLD del C:BackupsNTUSER.OLD

ren C:BackupsCOMPONENTS COMPONENTS.OLD

ren C:BackupsSAM SAM.OLD

ren C:BackupsSECURITY SECURITY.OLD

ren C:BackupsSOFTWARE SOFTWARE.OLD

ren C:BackupsSYSTEM SYSTEM.OLD

ren C:BackupsNTUSER.DAT NTUSER.OLD

REG SAVE HKLMCOMPONENTS C:BackupsCOMPONENTS

REG SAVE HKLMSAM C:BackupsSAM

REG SAVE HKLMSECURITY C:BackupsSECURITY

REG SAVE HKLMXSOFTWARE C:BackupsSOFTWARE

REG SAVE HKLMXSYSTEM C:BackupsSYSTEM REG SAVE HKCU C:BackupsNTUSER.DAT

3. Сохраните файл где-нибудь, где вам удобно, например на Рабочем столе, и дайте ему расширение .bat (например, back up registry.bat).

4. Откройте Проводник, перейдите в Компьютер (Computer) и выберете диск С:. Создайте на диске папку с названием Backups. Если вы хотите хранить файлы резервного куста в другом месте, замените все 24 экземпляра C:Backups в тексте, набранном в пункте 2, на полный путь к вашей папке для резервного копирования.

5. Чтобы запустить резервное копирование, щелкните правой кнопкой на файле back up registry.bat и выберите Запуск от имени администратора (Run as administrator). (См. главу 8, в которой поясняется, почему нельзя просто дважды щелкнуть на файле, чтобы запустить его.)

Чтобы запускать это резервное копирование автоматически каждый раз при запуске Windows, создайте ярлык для файла back up registry.bat в папке Автозагрузка в меню Пуск. Или, если вы обычно переводите свой компьютер в спящий режим вместо выключения, используйте функцию Планирование заданий (Scheduled Tasks) (глава 9), чтобы запланировать запуск резервного копирования через регулярные промежутки времени, скажем, через каждые три дня.

Ц'4

6. Теперь вы можете проявить сверхосторожность и записать скопированные файлы куста на компакт-диск или сетевой диск для безопасного хранения.

Итак, что является особенным в этой второй процедуре? Во-первых, она автоматизируется, используя малоизвестный инструмент реестра Командной строки REG.exe вместо редактора реестра, чтобы создать файлы куста. (Чтобы узнать больше о REG.exe, откройте окно Командной строки, введите reg /? и нажмите Enter.) Кроме того, автоматически архивируется предыдущее резервное копирование, таким образом, всегда поддерживаются два набора резервных копий файлов, и этот трюк выполнен простыми командами пакетных файлов (подробнее

о пакетных файлах см. в главе 9).

Наиболее важно, однако, что вместо одного создается пять отдельных файлов куста из ветви HKEY_LOCAL_MACHINE, по одному для каждой ветви, кроме HARDWARE, который генерируется динамически. В результате резервные копии файла, которые вы получите, будут такими же, как те, которые Windows обычно использует, чтобы хранить реестр на жестком диске.

Windows хранит активные файлы куста, относящиеся к HKEY_L0CAL_MACHINE, в папке WindowsSystem32Config. Исключение составляет ветвь HKEY_CURRENT_USER, хранящаяся в файле NTUSER.DAT, расположенном в каталоге пользователя (обычно Users{MM« пользователя», f

Просматривая папки, вы можете обнаружить WindowsSystem32config RegBac к. Проверьте даты файлов в папке RegBack, и вы наверняка увидите, что они недавние - это вчерашние или сегодняшние резервные копии куста файлов --HKEY LOCAL_MACHINE.

Хотя Windows регулярно создает эти резервные копии, они не являются ни полным» (не включается ветвь HKEY_CURRENT_USER), ни столь же полезными, как резервное копирование, которое вы делаете самостоятельно. Например, проблема, которая препятствует тому, чтобы Windows загрузился, вероятно, затронет автоматические резервные копии, но не обязательно — те резервные копии, которые вы сделали вручную три дня назад, непосредственно перед тем, как установили приложение.

Все это означает, что можно восстановить реестр из резервной копии разными способами. Конечно, можно всегда использовать Файл ? Импорт (File ? Import) в редакторе реестра, как описано ранее в этом разделе, но это работает, только если Windows запускается.

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

1. Вставьте установочный диск Windows 7 в дисковод и запустите компьютер.

См. главу 1, если компьютер не загружается от вашего компакт-диска или если доступен только «диск восстановления*, созданный производителем.

t*r-

j

2. Нажмите Next на первом экране инсталлятора и выберите Repair your computer на второй странице.

3. В окне System Recovery Options выберите Microsoft Windows 7 и затем нажмите Next

4. Выберите режим командной строки.

5. В появившемся окне командной строки попытайтесь скопировать текущее состояние реестра. Затем введите следующие команды, чтобы восстановить реестр из сохраненных файлов:

REG RESTORE HKLMCOMPONENTS C:BackupsCOMPONENTS REG RESTORE HKLMSAM C:BackupsSAM REG RESTORE HKLMSECURITY C:BackupsSECURITY REG RESTORE HKLMSOFTWARE C:BackupsSOFTWARE REG RESTORE HKLMSYSTEM C:BackupsSYSTEM REG RESTORE HKCU C:BackupsNTUSER.DAT

Если вы хотите восстановить только часть реестра, можно пропустить несколько строк.

М?« А • v

__

6. Извлеките установочный диск и перезапустите компьютер.

При некоторой удаче Windows запустится в обычном режиме. Если этого не произошло, ваше новое резервное копирование оказалось дефектным либо проблема была в чем-то другом. Если вы подозреваете, что вам может помочь более старое резервное копирование, на шаге 5 к именам файлов добавьте расширение .OLD:

REG RESTORE HKLMCOMPONENTS C:BackupsCOMPONENTS.OLD

Если Windows все равно не запускается, попытайтесь переустановить систему (см. главу 1).

Возможно, реестр достаточно сильно поврежден или был поврежден файл REG.exe. В этом случае попытайтесь следующим образом заменить активные файлы куста своими резервными копиями:

1. Откройте режим командной строки, как было описано в пунктах 1-4.

2. Введите такие команды, чтобы скопировать файлы:

сору C:BackupsCOMPONENTS C:WindowsSystem32Config сору С: BackupsSAM С: WindowsSystem32Config сору C:BackupsSECURITY C:WindowsSystem32Config сору C:BackupsSOFTWARE C:WindowsSystem32Config сору C:BackupsSYSTEM C:WindowsSystem32Config сору C:BackupsNTUSER.DAT C:Usersyour_user_folder

где yourjjserJolder является именем вашей пользовательской папки, которое может совпадать или не совпадать с вашим именем пользователя. Если вы не знаете имя папки, введите dir C:users, чтобы увидеть все пользовательские папки на вашем компьютере. Если в имени папки есть пробелы, добавьте кавычки: сору C:BackupsNTUSER.DAT "C:UsersPhillip 3. Fry”

3. Когда все сделано, извлеките установочный диск и перезапустите компьютер.

ДРУГИЕ ПУТИ РЕЗЕРВНОГО КОПИРОВАНИЯ РЕЕСТРА WINDOWS

Вышеупомянутые автоматические резервные копии файлов куста, сохраненные в папке WindowsSystem32configRegBack, представляют собой только одну из нескольких систем отказоустойчивости, встроенных в Windows 7.

Имеется способ отменить плохую установку драйвера оборудования без резервного копирования или восстановления реестра. Просто откройте Диспетчер устройств, щелкните правой кнопкой по неисправному устройству, выберите Свойства (Properties), затем вкладку Драйвер (Driver) и щелкните Откатить (Roll Back Driver). Если это не работает, щелкните правой кнопкой на устройстве и выберите Удалить (Uninstall). В ответ на запрос подтвердите, что вы хотите стереть файлы драйвера. Затем отсоедините и повторно подключите устройство или перезапустите Windows, если повторное подключение невозможно.

Можно удалить отказавшее программное обеспечение с помощью инструмента Программы и компоненты (Programs and Features) в Панели управления, но только если деинсталлятор программы работает. В противном случае ищите в сети название программы и слово «удаление», чтобы узнать, существуют ли какие-либо специальные инструменты или процедуры для программы, которую вы пытаетесь удалить.

Конечно, ни один из этих инструментов не принесет пользы, если Windows не будет запускаться. Есть также запись под названием Последняя удачная конфигурация (Last Known Good Configuration) в меню запуска, которое показывается, если последнее закрытие Windows прошло некорректно или вы нажимали F8 перед началом загрузки Windows. Теоретически эта функция запускает Windows с более ранним набором драйверов оборудования и настроек, взятых из последней успешной загрузки. Однако Windows 7 с трудом понимает, что такое «удачная загрузка»-, и не в состоянии обнаружить более раннюю конфигурацию, которая решает проблему или вообще работает. Данный способ стоит попробовать, если у вас нет резервной кошт реестра, но не надейтесь на чудо.

Удаленное редактирование реестра другого компьютера

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

Вот как это можно сделать:

1. На удаленном компьютере — том, с которым вы хотите соединиться, — откройте окно Службы (Services); в меню Пуск в ноле поиска введите services.msc и нажмите Enter.

2. Выберите в списке службу Удаленный реестр (Remote Registry) и щелкните на зеленой стрелке Запуск службы (Start) иа панели инструментов (или щелкните правой кнопкой на службе и выберите Start (Запустить).

I Если вы будете удаленно редактировать реестр этого компьютера часто, щелк-

I ните правой кнопкой на службе Удаленный реестр (Remote Registry), выберите д*, Свойства (Properties) и из списка Т ипов запуска (Startup type) выберите Автоматически (Automatic). Тогда запуск будет происходить автоматически при запуске Windows и служба будет готова к использованию в любой момент.

3. Повторите иа локальном компьютере шаги 1 и 2.

4. Запустите редактор реестра на локальном компьютере и из меню Файл (File) выберите Подключить сетевой реестр (Connect Remote Registry).

5. Когда появится окно Выбор:Компьютер (Select Computer), введите в поле Введите имена выбираемых объектов (Enter the object name to select) имя удаленного компьютера и нажмите ОК.

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

7. Через несколько мгновений ниже локального реестра появятся две ветви реестра удаленного компьютера, как показано на рис. 3.12.

Обратите внимание на то, что в удаленном реестре видны только ветви HKEY_ LOCAL_MACHINE и HKEYJJSERS. Но так как другие корневые ветви HKEY_CURRENT_ USER и HKEY_CLASSES_ROOT - это ссылки на подразделы, вам доступен весь реестр. Чтобы получить доступ к удаленной ветви HKEY_CLASSES_ROOT, переместитесь в HKEY_LOCAL_MACHINESoftwareClasses.

8. Когда вы закончите работу с удаленным реестром, щелкните правой кнопкой на имени удаленного компьютера в дереве редактора реестра и выберите Отключить (Disconnect).

$ Редактор реестр*; ТэШЙИЙ Й»ЙЛ ОрЭВК! Вид?flpiH6 Ь Я* Компьклср-* 9 АЬьк>-$i WSY.lQCAl.MACHJKt? ,THffiv.usaslИм* 7*г» !' L„ ’Г... —l Т. h ... -Г . . ... ? _J AtofcSHKEY.USERS i Рис. 3.12. Соединение с реестром удаленного компьютера и появление основания дерева в редакторе Реестра

Наиболее вероятная проблема, с которой вы встретитесь, получая доступ к удаленному реестру, — это отказ в доступе, что может означать все что угодно. Если ошибка возникает при входе в систему, значит, вы неправильно ввели имя пользователя или пароль на шаге 6 (очевидно). Как только вы зарегистрированы, любые такие ошибки вызываются ограничениями системы безопасности (см. «Как запретить изменения в разделе реестра»).

Во-первых, ветвь, к которой вы пытаетесь получить доступ, должна разрешать чтение и перезапись для пользователя с учетной записью, соответствующей вашему входу в систему (снова шаг 6).

Во-вторых, специальный раздел HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ControlSecurePipeServerswinreg должен быть доступен для чтения у обеих учетных записей: учетной записи входа (шаг 6) и учетной записи пользователя, под которой работает служба Удаленный Реестр (Remote Registry service) (шаг 2). По умолчанию используется учетная запись пользователя Локальная служба (Local Service); проверьте это, щелкнув правой кнопкой на службе Удаленный Реестр (Remote Registry service) в окне Службы (Service), выбирая Свойства (Properties), а затем вкладку Вход в систему (Log On).

Можно ограничить удаленный доступ к реестру для определенных пользователей, отказав им в доступе для чтения к вышеупомянутому разделу WinReg.

Сопоставление типов файлов

Сопоставление типов файлов — это связи между документами и приложениями, которые они используют. Самое стандартное использование этой функции состоит в том, чтобы научить Windows, что надо открыть Блокнот (Notepad), когда вы дважды щелкаете на значке текстового документа, или открыть форму онлайн-заказа, если вы щелкаете на ссылке в электронном письме со спамом.

Можно было бы предположить, что текстовый файл так или иначе знает, что он документ Блокнота, но это не так. Вместо этого Windows решает, как обработать файл, ориентируясь исключительно на его расширение. Расширение — эго группа символов (обычно три), которые следуют за точкой в большинстве имен файлов. Например, расширением файла Readme.txt является .txt — файл текста без фор* матирования. Аналогично, расширение Resume.docx — это .docx, которое говорит Windows, что этот файл — документ в формате Microsoft Word. Некоторые подробности по этому вопросу размещены далее во врезке «Расширения файлов: пример исключений из правила».

РАСШИРЕНИЯ ФАЙЛОВ: ПРИМЕР ИСКЛЮЧЕНИЙ ИЗ ПРАВИЛА

Может показаться, что из правила о расширениях файлов есть исключения: файлы, которые, несмотря на свои расширения, кажется, знают, какие приложения их создали. Например, откройте Microsoft Excel и сохраните рабочий лист как веб-страницу (*.htm;*.html), и у получившегося файла в Проводнике будет значок Excel, хотя у остальных ваших .html-файлов есть значок, соответствующий вашему веб-браузеру по умолчанию. Кроме того, щелкните правой кнопкой на файле и выберите Редактирование, и файл откроется в Excel, а не в HTML-редакторе по умолчанию.

Происходящее является не исключением из правила «расширение определяет тип», а скорее его следствием. Когда вы устанавливаете Microsoft Office, файл msohevi.dll, среди прочего, регистрируется с некоторыми из типов файлов в реестре. В дальнейшем Windows будет просматривать в каждом .html-файле тэги в заголовке:

<meta name=ProgId content=Excel.Sheet>

<meta name=Generator content=”Microsoft Excel 12">

Если бы вы открыли файл с помощью Блокнота (Notepad) и стерли эти две строки, то нарушили бы ссылку и файл стал бы обыкновенным .htinl-файлом, с соответствующим значком и прочим. Или если вы измените расширение файла на, скажем, .txt, то Windows не будет проверять файл, а будет работать с ним как с любым другим .txt-файлом.

Некоторые могут возразить, что это несправедливо со стороны Microsoft — так изменить правила и создавать файлы, которые ведут себя не так, как все другие файлы их типа. Если вы — один из них, то можете стереть разделы реестра, указывающие на Office DLL в .html-типе файла, что не только разорвет ссылку на Excel, но и воспрепятствует тому, чтобы Windows или Excel ее постоянно восстанавливали. (Подробнее IconHandlers обсуждается далее в этой главе.) Хотя таким образом вы ухудшите функциональность (увы!), зато восстановите справедливость и, что более важно, реализуете ваши собственные предпочтения, которые Microsoft игнорирует в противном случае.

Может показаться глупым, что большая часть возможностей Windows открывать файлы основана на таком легко повреждаемом параметре, как имя файла, но эта схема имеет свои преимущества. Например, очень легко изменить программу, ко* торая используется для открытия всех ваших цифровых фотографий, и, чтобы сделать это, нет необходимости модифицировать каждый из .jpg-файлов. Кроме того, легко предсказать, что происходит каждый раз, когда вы дважды щелкаете на .tif-файле, что, конечно, удобно.

Но есть и обратная сторона. Во-первых, приложение легко может быть установлено как приложение по умолчанию для любого тина файла на вашем компьютере, и немедленно перехватит на себя целую группу файлов. В Windows 7 имеется механизм для борьбы с этим — подробнее на с. 168 «Зло переопределения UserChoice» — но его использование может повредить ваши пользовательские типы файлов и элементы контекстного меню.

Другой дефект в системе расширений файлов Windows — это то, что Проводник по умолчанию скрывает расширения файлов, поэтому файл Invoice.xlsx появляется просто как Invoice. К счастью, это достаточно легко изменить; откройте Параметры папок (Folder Options) в Панели управления (или щелкните на Упорядочить ? Параметры папок и поиска (Organize ? Folder and Search Options) в Проводнике). В окне Параметры папок, выберите вкладку Вид (View), отключите Скрывать расширения для зарегистрированных типов файлов (Hide extensions for known file types) и нажмите ОК.

Если Windows показывает расширения файлов, легче определить, с какими файлами вы имеете дело. Вместо файла, названного просто recipe, вы можете увидеть recipe, tif, если это отсканированный рецепт, recipe.pdf— если это файл Acrobat с рецептом, или recipe.exe — если это троянский конь, которого вы только что получили по электронной почте. Конечно, необходимо открыть файл, чтобы увидеть, делаете вы пирожки или взрывчатые вещества, но по крайней мере можно предугадать действия соперника, зная, какое приложение откроется: вы будете знать, необходимо ли преобразовать файл в другой формат, прежде чем отправить его на ваш блог «Анархия с шоколадной крошкой».

Наличие видимых расширений означает, что можно изменить восприятие

- - , Windows типа файла, просто переименовав его расширение. (Обратите внима-

I i?’ ние»что изменение расширения файла не изменяет его содержание или формат, а влияет только на взаимодействие с ним Windows.) Скрывать расширения файлов Microsoft начинала в Windows 95 (в тщетной попытке сделать Windows более легкой для использования), но только в Windows Vista Microsoft сделала тонкое, но важное (и удобное) изменение. В Vista и в Windows 7 при переименовании файла Проводник выделяет имя файла только до точки, разрешая ввести новое имя, но не изменяя его расширение.

Так как только зарегистрированные расширения файла скрываются по умолчанию, recipe.pdf появляется как recipe.pdf, пока вы не установили Adobe Acrobat Reader. Дважды щелкните .pdf-файл без этого приложения, и Windows спросит вас, что вы хотите сделать, как показано на рис. 3.13. Не удивляйтесь, если вы не получите полезной информации после щелчка на Выполнить поиск программы в MHTepHere(Use the Web service to find the correct program) в окне, показанном на рис. 3.13. Лучшие ресурсы для идентификации незнакомых расширений файлов находятся по адресам: http:// wikipe dia.org/wiki/list_of_file_fbr mats и http://filext.com.

Как только программа установки Acrobat зарегистрирует .pdf-тип файла, .pdf-pac-ширения исчезают в Проводнике и файл показывается просто как recipe, кроме случая, когда вы решите сделать расширения файлов видимыми, как описано выше. Но что означает «зарегистрировать тип файла»?

Анализ типа файла

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

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

Все начинается с открытия единственного раздела в HKEY_CLASSES_ROOT, названного по названию расширения файла (включая точку). Значение (По умолчанию) в этом разделе содержит имя другого раздела, в котором есть все, что относится к этому типу файла. Например, откройте редактор реестра и посмотрите на эти разделы:

HKEY_CLASSES_ROOT.log НК Е Y_C LASS ES_ROOT.scp НК ЕY_C LASS Е S_ROOT.txt

У каждого есть значение (По умолчанию), которое содержит слово txtfile. Таким образом, каждое расширение файла указывает на файл типа txtfile, который находится в HKEY_CLASSES_ROOT xtfile. И в этом txtfile-разделе находится все содержание. См. некоторые подробности во врезке «Специальные разделы типов файлов».

Система, которую Windows использует, чтобы следить за типами файла, существовала в течение многих лет и пережила различные версии Windows. В результате в ней есть множество противоречий. Хотя большинство типов файлов соответствует структуре, изложенной на этих страницах, не удивляйтесь, если вы увидите что-то, что не соответствует описанному, но все еще работает.

СПЕЦИАЛЬНЫЕ РАЗДЕЛЫ ТИПОВ ФАЙЛОВ

В реестре есть несколько специальных типов файла, каждый из которых работает как стандартный тип файла, несмотря на наличие намного большего контекста. А именно:

HKEY__CLASSES_ROOT*

раздел реестра звездочка (*), удобно помещенный в редакторе реестра в начале ветви HKEY_CLASSES_ROOT, определяет действия и расширения для всех файлов (но не папок или дисков). Если вы хотите выделить элемент контекстного меню, эта возможность находится в подразделе Shell или ShellEx раздела *.

Добавив новый раздел в HKEY_CLASSES_ROOT*Shell, вы добавите элемент контекстного меню для всех файлов на компьютере. Например, вы можете добавить раздел под названием OpenlnNotepad, ввести Открыть в Блокноте в значение раздела (По умолчанию) и затем добавить горячую клавишу, которая указывает на notepad.exe. После этого щелкните правой кнопкой па любом файле и вы-берите Открыть в Блокноте, чтобы просмотреть файл в новом окне Блокнота. Более подробную информацию см. в разделе «Настройка контекстных меню для файлов».

HKEY_CLASSES_ROOTAllFilesystemObjects

Эта ветвь работает аналогично *, описанной выше, за исключением того, что записи применяются ко всем файлам, папкам и дискам (не только к файлам). HKEY_CLASSES_ROOTUnknown

Этот раздел используется, чтобы определить свойство всех файлов с незарегистрированными расширениями. По умолчанию здесь есть только один тип файла, openas, который отвечает за диалоговое окно, показанное на рис. 3.13. Можно, конечно, добавить новые действия или изменить здесь действия по умолчанию. Например, вы можете работать с набором документов различных типов, неизвестных Windows, и открывать их все по умолчанию в вашем любимом текстовом редакторе, избегая необходимости предварительно регистрировать все эти типы.

У типичного раздела типа файлов (например, НКЕY_CLASSES_ROOT xtfile) есть несколько значений и подразделов, большинство которых показано на рис. 3.14.

Первое значение (По умолчанию) содержит показываемое название типа, которое выводится в столбце Тип (Туре) в Проводнике.

Если в этом разделе будет присутствовать значение с названием AlwaysShowExt, то расширение для этого типа файла будет выведено на экран в Проводнике, даже если вы выбрали «скрывать расширения файлов» (установка, объясненная выше). Аналогично значение NeverShowExt дает Проводнику команду всегда скрывать расширения файлов, независимо от вашего предпочтения. Эго значение появляется в нескольких разделах типа файла — для Ярлыки (Windows Shortcuts) (.Ink-файлы), Интернет-ярлыки (Internet Shortcuts) (.url-файлы) и Команды Проводника (Explorer Commands) (.scf-файлы).

Вы увидите также некоторые другие значения, такие как EdftFlags, FriendlyTypeName, и InfoTip, которые менее значительны, однако содержимое следующих трех подразделов отвечает за основную красоту:

О Defaultlcon

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

О Shell

Каждый подраздел Shell соответствует элементу (действию) в файле контекстного меню. О том, как структурирована эта ветвь, см. «Настройка контекстных меню для файлов».

О ShellEx

Ветвь ShellEx перечисляет расширения Проводника—дополнительные программы, разработанные для взаимодействия с Проводником и добавления функций. Эта ветвь рассматривается вр врезке «Исправление ненадежных расширений оболочки» на с. 172.

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

Изменение значка для всех файлов одного типа

Для каждого типа файла по умолчанию существует значок, который отображается для всех файлов данного типа. Однако Windows 7 не предлагает другого способа указать собственный значок, кроме как через редактирование реестра вручную. А ведь такая возможность присутствовала раньше во всех версиях Windows до Vista.

Значение (По умолчанию) в разделе Defaultlcon содержит полный путь и имя файла, содержащего значок. Часто в нем содержится указание на приложение, которое открывает файл (например, excel.exe для xls-файлов), но иногда можно найти ссылку на .dll- или .ico-файл, содержащий набор значков. За именем файла следует запятая и индекс, который указывает номер отображаемого значка. Например:

C:Program FilesPhotoshopPhotoshop.exe, 15

указывает на файл Photoshop.exe, расположенный в папке C:Program FilesPhotoshop, и на 16-й значок в этом файле (нумерация значков начинается нулем). Иногда в разделе Defaultlcon можно увидеть что-то вроде

%SystemRoot%system32wmploc. dll, -731

Здесь %SystemRoot% — это переменная, которая представляет папку Windows (обычно C:Windows). Когда значение (По умолчанию), в котором хранится эта информация, помещается в расширяемое строковое значение (описано в разделе «Суть реестра — его значения»), Windows, прежде чем получить значок, преобразовывает имя файла в C:WindowsSystem32wmploc.dll. Иногда можно увидеть после имени файла и отрицательную величину (здесь -731), которая представляет ID ресурса (resource ID) используемого значка, — в противоположность положительному значению, указывающему индекс (позицию) значка, как описано ранее.

?9&Г-

Трюк, который можно применить для некоторых файлов изображений, например #«, I ico, — установить Defaultlcon значение (По умолчанию) «%1» (вводить с кавычка-^ ^ •, ми). Эта «самоссылка» указывает Проводнику использовать встроенное в файл ' изображение в качестве значка файла. Хотя это работает и для некоторых других форматов изображений, эта функция оказалась вытеснена IconHandlers.

В большинстве случаев можно задать свой значок для конкретного типа файла, указав полный путь к файлу .exe, .dll, .ico или .bmp в значении (По умолчанию) раздела Defaultlcon. (Подсказка: некоторые хорошие значки находятся в WindowsSystem32 shell32.dll.) Укажите число — номер значка, который следует отображать, или не указывайте, чтобы использовать первый значок в файле. В некоторых случаях Проводник распознает изменение сразу же, в связи с тем что он кэширует значки; возможно, понадобится перезапустить Windows, чтобы эти изменения полностью вступили в силу.

Самым легким способом изменить значок для типа файла является применение стороннего инструмента, такого как Fileiype Doctor, обсуждаемого в следующем разделе.

SiU

Единственный случай, когда Windows не будет обращать внимание на значок, указанный в разделе Defaultlcon, — это когда задействован IconHandler, который генерирует динамичные значки (рис. 3.15), обычно показывая миниатюры содержимого файлов вместо статических значков.

IconHandler — это программа, которая понимает формат файла (обычно файл .dll в папке программы приложения), с которым файл связывается. Например, Adobe Acrobat (версия 7.0 и позже) использует эту функцию, чтобы облегчить предварительный просмотр миниатюр файлов .pdf. Для расширения .pdf IconHandler приложения Acrobat может быть указан в любом из следующих разделов реестра:

HKEY_CLASSES_ROOT.pdfShellExIconHandler

HKEY_CLA5SES_R00T. pdf ShellEx{BB2E617C-0920-11D1-9A0B-00C04FC2D6C1} HKEY_CLASSES_ROOTAcroExch. Document. 7ShellExIconHandler HKEY_CLASSES_ROOTAcroExch.Document.7ShellEx {BB2E617C-0920-llDl-9A0B00C04FC2D6C1)

HKEY_CLASSES_ROOTSystemFileAssociations. pdfShellExIconHandler HKEY_

CLASSES_ROOTSystemFileAssociations.pdfShellEx{BB2E617C-0920-llD19A0B-

00C04FC2D6C1}

HKEY_CLASSES_ROOTSystemFileAssociationsimageShellExIconHandler HKEY_

CLASSES_ROOTSystemFileAssociationsimageShellEx{BB2E617C-0920-llD19A0B-

00C04FC2D6C1)

Выясняется, что Adobe выбрал четвертый из этих разделов, чтобы зарегистрировать свой IconHandler. Значение (По умолчанию) в этом разделе содержит 38-значный класс ID, который указывает на запись в HKEY_CLASSES_ROOTCLSID, содержащую подробные данные о файле .dll.

Если ссылка на IconHandler содержится в одном из разделов под названием IconHandler, то указанный в нем .dll-файл отвечает за динамически сгенериро-^ ванный значок. Но более новые программы для ссылки на IconHandler будут ис-

% пользовать раздел {BB2E617C-0920-lldl-9A0B-00C04FC2D6Cl}. Для получения дополнительной информации о разделе SystemFileAssociations см. «Расширение возможностей ваших типов файлов».

Хотите заменить динамические значки статическими? Найдите ссылку на IconHandler и сотрите раздел IconHandler или раздел {BB2E617C-0920-lldl-9A0B-00C04FC2D6Cl}-это отключит IconHandler и позволит Проводнику использовать статический значок, определенный в разделе Defaultlcon.

Но что, если вы хотите исправить тип файла, для которого предварительный просмотр значка перестал работать? Часто для того, чтобы восстановить разделы

IconHandler, проще переустановить ассоциированное приложение, но если это приложение — непосредственно Windows, то вы, вероятно, захотите выполнить следующие шаги, чтобы восстановить предварительный просмотр значка на вашем компьютере:

1. Откройте редактор реестра.

2. Перейдите к разделу реестра для расширения файла, которое вы хотите изменить. Например, если вы хотите включить предварительный просмотр значка для файлов TIFF, переместитесь в HKEY_CLASSES_ROOT.tif.

3. Найдите в разделе .tif значение PerceivedType. Если его там нет, выберите Правка ? Создать ? Строковый параметр (Edit ? New ? String Value) и введите имя PerceivedType.

4. Дважды щелкните на PerceivedType, введите image и нажмите ОК.

5. Затем переместитесь к HKEY_CLASSES_ROOTSystemFileAssociationsimage. Как описано в разделе «Расширение возможностей ваших типов файлов», этот раздел обеспечивает общие свойства для всех файлов изображений, таких как .jpg, .bmp и .tif.

6. Откройте раздел ShellEx и найдите раздел, названный {BB2E6l7C-0920-lldi-9А 0B-00C04FC2D6C1}. Если его там нет, выберите Правка ? Создать ? Раздел (Edit ? New ? Key) и введите имя нового раздела {BB2E617C-0920-lldl-9A0B-00C04FC2D6C1}.

7. Откройте раздел {BB2E617C-0920-lldl-9A0B-00C04FC2D6Cl} и дважды щелкните на значении (По умолчанию). Введите {3F30C968-480A-4C6C-862D-EFC0897BB84B} и нажмите ОК.

Из двух ID-классов, упомянутых здесь, {BB2E617C-0920-lldl-9A0B-00C04FC2D6C1} соединяет тип файла с областью просмотра Провод-^ dm% ннка> a {3F30C968-480A-4C6C-862D-EFC0897BB84B} указывает на PhotoMetadataHandler. dll - собственный файл Windows, ответственный за генерирование предварительного просмотра значков для всех поддерживаемых форматов файлов фотографий.

8. Изменение должно сразу вступить в силу; в противном случае, чтобы увидеть новые значки, перезапустите Windows.

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

Настройка контекстных меню для файлов

Контекстное меню (иногда его называют меню правого юшка или меню объекта) — это небольшое меню, которое появляется, когда вы используете правую кнопку мыши, чтобы щелкнуть на файле, папке, панели заголовка приложения или почти любом другом объекте на экране. В большинстве случаев это меню содержит список действий, присущих объекту, на котором вы щелкнули. Другими словами, доступные опции зависят от контекста.

Контекстное меню для файлов, показанных на рис. 3.16, является набором стандартных действии, применимых ко всем файлам (например, Копировать (Сору), Вставить (Paste), Удалить (Delete), Переименовать (Rename) и Свойства (Properities), плюс одно или несколько специальных действий, зависящих от типа файла. Каждое из этих действий связано с приложением: если вы щелкаете правой кнопкой на .txt-файле и выбираете Открыть (Open), Windows запускает Блокнот (по умолчанию) и дает Блокноту команду открывать выбранный файл. Действие по умолчанию — это действие, которое выполняется при двойном щелчке на файле, — выделено в контекстном меню полужирным шрифтом, а остальные действия перечислены ниже. Между прочим, это означает, что у вас может быть более чем одна программа, связанная с данным типом файла.

Например, для .html-файлов вы можете добавить действие Редактировать, чтобы открывать ваш любимый редактор веб-страниц, действие Просмотр с помощью Firefox, и действие Просмотр с помощью Internet Explorer — все это в дополнение к действию Открыть (Open) по умолчанию. Чтобы увидеть, как это работает, см. следующую врезку «Копирование содержимого файла в буфер обмена».

Рис 3.16. Щелкните правой кнопкой на файле, чтобы увидеть его контекстное меню; в Windows 7 не очень легко настраивать элементы, которые здесь отображены

КОПИРОВАНИЕ СОДЕРЖИМОГО ФАЙЛА В БУФЕР ОБМЕНА

Вот пример, покалывающий, как добавить пользовательское контекстное меню к типу файла с использованием малоизвестной новой игрушки в Windows 7 под названием clip.exe. Это программа командной строки, которая копирует текст в буфер обмена и, по стечению обстоятельств, хорошо работает с текстовыми файлами.

Откройте редактор реестра и перейдите к HKEY_CLASSES_ROOT.txt. Посмотрите на значение (По умолчанию) в правой области, чтобы узнать имя раздела типа файла (обычно это txtfile).

Перейдите к разделу типа файла (например, HKEY_CLASSES_ROOT xtfile) и откройте подраздел shell (HKEY_CLASSES_ROOT xtfileshell). Создайте внутри shell новый раздел, названный copycontents. Откройте новый раздел, щелкните на значении (По умолчанию), введите Копировать содержание в буфер обмена (Сору Contents to Clipboard) в качестве данных значения и нажмите ОК.

Затем создайте раздел, названный command, внутри раздела copycontents. Откройте новый раздел command и установите его значение По умолчанию (Default) cmd. exe / с clip < "%1". Затем нажмите ОК и закройте редактор реестра.

Чтобы проверить, как это работает, щелкните правой кнопкой на любом .txt-файле в Проводнике и выберите Копировать содержимое в буфер обмена. (Если новой записи там нет, возможно, вы поместили новые разделы в реестре в неправильном месте.) Можно проверить, что содержимое файла было скопировано в буфер обмена, вставив его в пустое окно Блокнота.

Можно использовать утилиту Clip, чтобы копировать в буфер обмена практически что угодно. Например, чтобы скопировать имя выбранного файла, введите данные значения (По умолчанию) в разделе command: cmd.exe /с echo%l | clip

Или, например, если вы добавили элемент контекстного меню в тип файла Папка (Folder), можно скопировать содержание любой папки с помощью такой команды: cmd.exe /с dir и%1" /Ь /о:п | clip

Откройте окно командной строки и введите clip /?, чтобы узнать команды этого инструмента.

Великолепно звучит, не правда ли? К сожалению, в Windows 7 совершенно отсутствует окно Типов файла (File Types) — инструмент из более ранних версий Windows, который позволяет редактировать контекстные меню Проводника. Вместо него предлагается чрезвычайно упрощенное окно Задать сопоставления (Set Associations), показанное на рис. 3.17. Здесь вы можете только выбрать приложения по умолчанию для различных типов файла и при этом стереть значения по умолчанию ваших приложений или любые пользовательские контекстные меню, которые вы создали (подробнее об этом позже).

Итак, если вы хотите настроить свои контекстные меню, остается две возможности: или взломать реестр, или использовать стороннюю программу. Учитывая, что эта глава — про реестр, немного развлечемся, копаясь в разделах и значениях.

В реестре есть раздел под названием Shell, друтри которого все и происходит. Каждый подраздел Shell соответствует одному действию в контекстном меню файла.

Текст, который появляется в контекстном меню, определяется в значении раздела действия (Поумолчанию); если значение пусто, Проводник использует имя раздела (например, Открыть (Open)). К сожалению, в Windows 7 есть две соревнующиеся системы, которые определяют действия по умолчанию для типов файлов; для получения подробной информации см. врезку «Зло переопределения UserChoice» на с." 169.

Рис 3.17. Окно Задать сопоставления (Set Associations window) доступное из Панели управления Программы по умолчанию ? Сопоставление типа файла или протокола с программой (Default Programs ? Associate a file type or protocol with a program) — не показывает ничего хорошего

Скажем, вы щелкаете правой кнопкой на документе Microsoft Excel (.xlsx-файл), и в верхней части меню, которое появляется, вы видите Открыть (Open), Новый (New), и Печать (Print). Если вы откроете реестр, вы увидите, что HKEY_CLASSES_ROOT. xlsx указывает на HKEY_CLASSES_ROOTExcel. Sheet. 12. Перейдите к HKEY_CLASSES_ROOT Excel.Sheet. 12Shell. Внутри раздела Shell вы увидите три подраздела — вы так и думали — New. Open, и Print Добавьте новый подраздел в Shell, сопровождаемый коротко описанными подразделами, и вы получите новую запись в контекстном меню для всех файлов выбранного типа.

ЗЛО ПЕРЕОПРЕДЕЛЕНИЯ USERCHOICE

Если вы щелкаете правой кнопкой на файле, выбираете Открыть с помощью (Орел With) и затем выбираете приложение по умолчанию ~ или если вы используете окно Задать сопоставления (Set Associations), показанное на рис. 3.17, - Windows фактически не изменяет тип файла. Вместо этого Windows добавляет новый раздел для расширения файла в HKEY_CURRENT_USERSoftwareMicrosoft WindowsCurrentVersion ExplorerFileExts и затем в этом новом разделе добавляет раздел UserChoice с полным путем программы, которую вы выбрали:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer FileExts. wavUserChoice

Раздел UserChoice должен препятствовать тому, чтобы приложения изменили значения по умолчанию без вашего разрешения; пока раздел UserChoice существует, Windows игнорирует все действия, определенные в обычном разделе типа файла. Любые обычные действия контекстного меню исчезают, и даже значок заменяется значком вновь выбранного приложения.

Как и многие другие заплаточные функции в Windows, система UserChoice работает не совсем хорошо. Во-первых, у типов файлов, к которым применена UserChoice, не может быть обычных контекстных меню или значков. И старый прием переустановки приложения, чтобы восстановить его типы файлов, не будет работать, пока присутствует раздел UserChoice (если, установщик недостаточно умен, что маловероятно). Но хуже всего то, что систему невозможно победить, не углубляясь в реестр.

Решение состоит в том, чтобы открыть редактор реестра, перейти к HKEY__CURRENT_ USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts и стереть расширение, которое вы хотите восстановить (или стереть весь раздел FileExts, чтобы восстановить все расширения файлов). После этого воздержитесь от использования меню Открыть с помощью (Open With) или Панели управления, чтобы модифицировать ваши типы файла, и ваши сопоставления файлов будут продолжать действовать на полную мощность.

XoTirre воспрепятствовать тому, чтобы Windows переопределил типы файла? См. инструкции в разделе 4Как запретить изменения в разделе реестра*.

Стоит отметить тот случай, когда система UserChoice может фактически иметь преимущество. Традиционно типы файлов сохранены в разделе HKEY_CLASSES_ROOT, который является подмножеством HKEY_LOCAL_MACHINE; это означает, что ваши типы файла — одни и те же для всех пользователей на вашем компьютере. Однако разделы UserChoice, скрытые в ветви HKEY_CURRENT_USER, разрешают каждому пользователю иметь собственную группу переопределений.

В каждом разделе действия имеется подраздел, названный command (и иногда еще один — названный ddeexec). Внутри раздела command находится значение (По умолчанию), которое указывает полный путь и имя файла запускаемой программы. Щелкните правой кнопкой на .xlsx-файле и выберите Открыть (Open), и Windows запустит программу, указанную в HKEY_CLASSES_R00TExcel. Sheet. 12shellpen command. Например:

"C:Program FilesMicrosoft 0fficefficel2EXCEL.EXE" /е

Кавычки вокруг полного пути и имени файла приложения дают возможность использовать пробелы и говорят Windows, где заканчивается имя файла и начинаются параметры командной строки (такие, как /е). Однако чаще всего командная строка содержит %1 — метку-заполнитель для выбранного имени файла, например:

"C:Program FilesUltraEditUEDIT32.EXE" "XI"

Когда Windows открывает эту программу, она передает ей полный путь и имя выбранного файла, помещая его вместо XI, например, гак:

"С:Program FilesUltraEditUEDIT32.EXE”

"С:UsersAsherDesktop eadme.txt"

Эта небольшая опция, XI, является причиной большого количества проблем в системе типов файла Windows, таких как О Приложение выводит на экран ошибку «не найдено»

Кавычки вокруг "XI" пропущены, а документ, который вы пытаетесь открыть, содержит символ -«пробел» в имени файла или в пути. Добавьте кавычки в значение (По умолчанию) и попробуйте еще раз.

О Более старое приложение выводит на экран ошибку «неверная командная строка» или что-то подобное

Не все программы хорошо реагируют на кавычки вокруг параметра "XIй. Попытайтесь удалить их.

О Приложение вообще не открывает файл

Параметр "XI" отсутствует, или приложение требует другого синтаксиса. Например, веб-браузер Mozilla SeaMonkey требует наличия перед %1 параметра url, таким образом:

C:Program FilesXMozilla SeaMonkeyseamonkey.exe -url "XI"

Если вы не уверены, что знаете, в чем нуждается ваше приложение, проверьте документацию или введите в поиске Google название приложения и слова «командная строка».

В некоторых случаях можно получить справку с помощью параметров командной строки программы, запуская приложение с командами /? или -help.