Книга: Тайны и секреты компьютера

Глава 14. Секреты системного реестра

Глава 14. Секреты системного реестра

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

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

В качестве обьекта исследования взят системный реестр операционной системы Windows95/98 как устроенный более просто, чем реестр систем на платформе NT — Windows 2000 и Windows XP. Кроме того, в настоящее время в России наиболее распространенной операционной системой остается Windows98 как сочетающая в себе умеренные требования к ресурсам компьютера и удовлетворительные сервисные функции и надежность, так что нижеприведенное описание сможет пригодиться максимальному числу пользователей именно в том случае, если его обьектом станет именно Windows 95/98. Однако о реестре Windows 2000/XP упоминания в главе тоже имеются, но приводятся они лишь "для общей информации" и руководствоваться ими при непосредственных действиях по изменению параметров системного реестра не стоит.

В операционных системах Windows9x физически реестр располагается в двух файлах в каталоге Windows (далее именно так будет обозначаться папка, в которую установлена операционная система — название этого каталога на вашем компьютере может быть другим) — System.dat и User.dat. Файлы System.da0 и User.da0 (на конце — цифра ноль) являются резервными копиями реестра первой очереди, которые создаются каждый раз после успешной загрузки компьютера, а в случае неудачи при загрузке могут быть помещены на место поврежденных файлов реестра. В Windows Me к указанным файлам добавился еще и файл classes.dat, являющийся тем самым третьей частью системного реестра.

Сам системный реестр состоит из двух частей. Первая — файл System.dat — содержит информацию, общую для всех пользователей данного компьютера: информацию о наличии устройств, их параметры, настройки некоторых программ и др. Вторая же часть — User.dat — является специфичной для каждого пользователя, храня его настройки. Оба файла имеют атрибут «Скрытый».

Если на компьютере зарегистрировано несколько пользователей, то в папке WindowsProfiles хранятся в отдельных каталогах «личные» файлы каждого: содержимое рабочего стола, главное меню и т. д… а также часть User.dat системного реестра. В папке Windows тоже хранится файл User.dat, содержащий настройки системы по умолчанию.[31] При загрузке компьютера после ввода имени пользователя файл User.dat из каталога этого пользователя вместе с System.dat и User.dat из каталога Windows загружается в память и «склеивается» с ними в единое целое.

В операционных системах Windows 2000/XP файлы системного реестра хранятся в подпапке System32/Config каталога с файлами Windows.

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

Меры предосторожности

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

В Windows98 резервное копирование реестра совершается автоматически. Каждый раз при успешном запуске Windows запускается программа scanregw.exe, которая копирует файлы реестра в папку WindowsSysbckup, заархивировав их в файл типа. cab (что уменьшает их обьем раза в четыре). Кроме того, в архив с реестром помещаются файлы win.ini и system.ini, также содержащие важные настройки системы. Для восстановления реестра используется программа scanreg.exe, работающая в Режиме MS-DOS.

Если на вашем компьютере установлена именно Windows98, то в случае катастрофы системы, когда при загрузке компьютера вы видите сообщение "Системный реестр поврежден" или "невозможно загрузить драйвер…" или что-нибудь еще, действия должны быть следующими:

1. Перезагрузить компьютер кнопкой Reset.

2. При загрузке компьютера держите нажатой клавишу Ctrl. В появившемся меню выберите пункт Command Prompt Only и дождитесь появления приглашения MS-DOS. Если вызвать меню загрузки таким образом не удается, то вставьте в дисковод загрузочную дискету и загрузитесь с нее. Дождитесь вывода на экран приглашения MS-DOS.

3. Введите команду scanreg /restore. Запустится программа восстановления системного реестра. Выберите желаемую копию (лучше всего наиболее позднюю, что можно определить по дате) и следуйте дальнейшим указаниям программы.

4. Перезагрузите компьютер. Все должно заработать.

По умолчанию программой scanregw.exe сохраняется 5 копий реестра — от пяти последних запусков Windows. Можно сделать так, что сохраняться будет не 5, а больше (до 100) или меньше копий реестра. Для этого создайте файл scanreg.ini в каталоге с утилитами scanreg.exe и scanregw.exe и укажите там параметр MaxBackupCopies со значением, равным числу желаемых резервов (просто написав в первой строчке файла scanreg.ini строку MaxBackupCopies=число_резервов). Также можно заставить операционную систему сохранять в архивах с копиями реестра и другие файлы — просто добавьте в scanreg.ini строки Files=полный путь к файлу.

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

Если у вас установлена Windows95, но вы желаете воспользоваться этими утилитами, то извлеките с помощью программы WinZip 7.0 или WinRar 2.50 и выше файлы scanregw.exe и scanreg.exe из файлов. cab дистрибутива Windows98[33] и поместите туда, куда сочтете нужным. Эти программы прекрасно работают и в этой операционной системе.

При работе в Windows95 и отсутствии возможности установки утилит резервирования реестра для его архивации в Режиме MS-DOS просто скопируйте файлы реестра в какую-либо папку вне каталога Windows, а для его восстановления произведите обратную операцию, скопировав заранее зарезервированные файлы поверх испорченных в каталоге Windows.

Если даже после восстановления системного реестра Windows не загрузилась — то увы, ее переустановка неизбежна. По всей видимости, в таком случае повредился какой-то системный файл, не реестр. (В этом случае ваши эксперименты над реестром не были причиной сбоя.) Вытаскивайте из папки Program Files и каталога с операционной системой все мало-мальски для вас ценное (не забудьте эвакуировать все нужное из папки "Рабочий стол", или «Desktop» в английской версии, — там находится все содержимое вашего рабочего стола, а также из каталога Profiles, если таковой существует — чтобы спасти файлы остальных пользователей, и из папки Applications Data в каталоге с Windows — там находятся папки с почтой Outlook Express, а также шаблоны Word2000), стирайте их (не забудьте предварительно снять со всех файлов в них атрибут "Только чтение", или придется подтверждать каждое удаление), удалите папку Recycled и запускайте setup.exe из каталога с дистрибутивом Windows. После установки системы и всех программ не забудьте сделать новые копии реестра.

Весьма желательно после установки Windows скопировать ее дистрибутив на жесткий диск и сделать загрузочную дискету. В любом случае восстановление Windows придется вести из Режима MS-DOS, а в таком случае доступ к CD-Rom'у будет невозможен, если не загрузить драйвера для него. Последнее же сделать не всегда возможно, так что надежнее будет иметь дистрибутив Windows на жестком диске.

Если вы отключите авторезервирование реестра в Windows98 или работаете с Windows95, то время от времени резервирование реестра рекомендуется повторять. Делать это надо в следующих случаях.

1. Когда вы установили новую большую программу и убедились, что она работает. Большие программные пакеты, например, Microsoft Office или Intermet Explorer, делают в реестре при своей установке большое количество записей, и могут отказаться работать, если впоследствии их не обнаружат. Если вы выполните переустановку реестра в таком случае, то вам придется переустановить и все эти программы.

2. Когда вы проводите нужное вам редактирование реестра, и оно оказывается успешным.

3. Когда вы добавляете новые учетные записи в Outlook Express, The Bat! в ftp-менеджеры и почтовые клиенты, и эти записи вам крайне необходимы. Они хранятся в системном реестре и в случае его замены — пропадут.

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

5. Когда вы внесли в конфигурацию Windows какое-нибудь важное вам изменение вроде настройки цветовой гаммы окон или звуковых схем и не хотели бы его потерять.

6. Когда вы установили новое устройство.

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

Кроме утилиты scanregw.exe из дистрибутива Windows98, фирмой Microsoft также создано несколько утилит, которые делают то же, что и эта, но несколько более красиво. К ним относятся программы Cfgback.exe и ERU (находятся на лицензионном компакт-диске Windows). Последняя сохраняет еще и все файлы настроек и автозапуска (win.ini, system.ini, msdos.sys, autoexec.bat, config.sys). Утилиты резервирования и восстановления реестра есть и почти в любом пакете дисковых утилит вроде Nuts&Bolts.

Для создания резервной копии системного реестра в Windows2000/XP необходимо загрузить компьютер с системной дискеты MS-DOS или в какой-нибудь другой операционной системе, установленной на нем (если таковая присутствует) и скопировать в отдельную папку все файлы, содержащиеся в подкаталоге system32/config той папки, куда Windows установлена. Произвести копирования файлов реестра этой операционной системы при работе в ней невозможно.

Редактор реестра

Сами по себе файлы реестра являются двоичными. В этом может убедиться каждый, открыв копию, скажем, User.dat в текстовом редакторе вроде Microsoft Word 6.0. Но в составе Windows есть специальная программа — Редактор реестра, которая представляет системный реестр в виде, удобном для восприятия. Это — файл regedit.exe из папки Windows. При установке операционной системы ярлык на этот файл в меню кнопки «Пуск» не появляется, так что создать его там нужно самому.

При запуске программы regedit.exe (рис. 14.1) перед пользователем предстает иерархическая структура системного реестра, несколько похожая на Проводник. В левой части окна программы расположено дерево разделов реестра, а в правой отображаются параметры (другое название — "ключи") и их значения, если они присутствуют в разделе. Все разделы реестра являются подразделами пиктограммы "Моего компьютера" в окне реестра, так как при работе в сети на основе Windows есть возможность редактировать реестры на удаленных компьютерах, и если бы с помощью меню «Реестр» к данному редактору реестра был бы подключен еще и сетевой реестр, то он бы отображался в качестве подраздела пиктограмы своего компьютера.


Рис. 14.1. Программа Редактор реестра.

Вся навигация по реестру в Редакторе реестра аналогична таковой в «Проводнике». Единственное отличие — в правой части окна редактора реестра никогда не появляются пиктограммы разделов. Нажатиями на знак "+" или двойными кликами на пиктограммах разделов можно добраться до любого раздела и параметра. Чтобы переименовать раздел или параметр, нужно выбрать соответствующий пункт из контекстного меню или нажать F2. Изучить возможности Редактора реестра по редактированию не составит труда. В Редакторе реестра также есть возможность поиска названия раздела, параметра или значения.

В Редакторе реестра имеется возможность записать всю древовидную структуру реестра в текстовый файл (с расширением. reg), например, чтобы потом ее изучить или сравнить с другой. Для этого служит команда "Экспорт файла реестра" из меню «Реестр». Есть возможность записать в текстовый файл лишь выделенный раздел, для этого нужно отметить специальный пункт в окне экспорта реестра.

При редактировании реестра имейте в виду, что команды «Отменить» в Редакторе реестра нет. Так что удаление раздела или параметра необратимо.

Если вы хотите посмотреть, что меняется в системном реестре под действием той или иной программы, то воспользуйтесь программой RegSnap с сайта http://webdon.com[34] ]. Она экспортирует реестр в текстовые файлы до и после действия исследуемой программы, а потом сравнит эти два файла и выяснит, какие ключи были добавлены, удалены, изменены.

Обзор системного реестра

Все записи в реестре подразделяются на три типа. Это разделы — некое подобие папок «Проводника»: они могут содержать в себе другие разделы и параметры. Это параметры — то, что может содержаться в разделе. Они могут быть трех типов: строковые — обычная текстовая строка, двоичные — число в двоичной системе счисления,[35] и типа Dword — число в десятичной или шестнадцатиричной системе (вводить можно в любой — во вторую систему число преобразуется автоматически). Ну, и у параметра может быть (а может и не быть) значение — только того типа, какой допускает параметр.

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

На самом деле реестр состоит всего из двух разделов — HKEY_LOCAL_MACHINE (содержится в файле System.dat) и HKEY_USERS (содержится в загруженных файлах User.dat). И именно их вы увидите, если экспортируете весь реестр в текстовый файл и его просмотрите. Так как сам реестр содержит в себе лишь два раздела, а его разложение на шесть производится исключительно в редакторе реестра (как бы "виртуальное представление" для удобства работы) то все изменения, сделанные в одном из дублированных разделов, автоматически будут сделаны и в другом — не из-за действий редактора реестра по синхронизации, а из-за того, что и тот, и другой — один и тот же раздел, просто два раза отображенный.

Но — все по порядку.

Сокровищница имен

Раздел HKEY_CLASSES_ROOT является точной копией раздела HKEY_LOCAL_MACHINESOFTWAREClasses и содержит в себе информацию о всех зарегистрированных в системе типах файлов. Именно из этого раздела берется информация для представления в окне "Типы файлов" (рис. 14.2). Но хранится информация о зарегистрированных расширениях весьма своеобразно и сложно. Вначале в разделе HKEY_CLASSES_ROOT идет список всех расширений (с точками вначале!), зарегистрированных в системе, каждое из которых является названием раздела реестра. В каждом таком разделе обязательно есть параметр "По умолчанию". В нем записано как бы «внутреннее» название расширения, которое "в ходу" у системы (рис. 14.3, слева).


Рис. 14.3. Слева показано, где можно узнать «внутреннее» имя типа файлов или задать его. Ну, а справа показано, где расположено «официальное» название типа файлов. Посмотрите его также и на рис. 14.2.

В разделе HKEY_CLASSES_ROOT также присутствует раздел с именем этого «внутреннего» названия расширения (расположенный ниже в окне редактора реестра), в котором находятся параметры, определяющие меню правой кнопки мыши для этого расширения. В параметре "По умолчанию" этого раздела записано «официальное» название типа файлов с таким расширением, которое, например, присутствует в списке окна "Типы файлов" (рис. 14.3, справа, также см. рис. 14.2).


Рис. 14.2. Сюда поступает информация из раздела HKEY_CLASSES_ROOT

В разделе, имя которое соответствует расширению с точкой вначале, также могут находиться различные параметры, определяющие интеграцию данного типа файлов в «Проводник». В частности, если создать в этом здесь раздел с именем, соответствующим внутреннему названию расширения, там — раздел с именем ShellNew, а в нем — строковый параметр NullFile (рис. 14.4, слева), то в выпадающий список "Создать файл" будет помещено «официальное» название типа файлов (рис. 14.4, справа). Так будет только в случае, если «официальное» название типа файлов присутствует в реестре, и указана программа, который этот файл открывает (см. ниже).


Рис. 14.4.Создайте параметр NullFile, как показано слева, и любуйтесь на новый пункт в меню Создать, как показано справа.

При выборе в этом списке этого типа файлов будет создан пустой файл с расширением, соответствующим этому «официальному» названию, и с таким же именем, что и «официальное» название. Если в папку WindowsShellNew поместить файл с этим расширением, а в разделе ShellNew создать не параметр NullFile, а параметр FileName, и в его значении указать имя этого файла, то при выборе этого типа файлов в списке "Создать…" в текущей папке будет создана копия файла, помещенного в папку WindowsShellNew.

Кроме того, в разделе ShellNew могут также быть параметры Data и Command. В первом случае значением параметра Data должен быть набор двоичных данных, которые будут помещены в пустой файл при его создании из меню «Создать». А во втором в параметре Command может быть указан путь к какому-либо исполняемому файлу с такими параметрами командной строки, которые приводят к созданию нового файла этой программы. Так, например, создаются ярлыки из меню «Создать».

Поэтому для того, чтобы почистить меню «Создать», придется потратить немало времени. Надо с помощью функции «Поиск» Редактора реестра найти в разделе HKEY_CLASSES_ROOT все разделы ShellNew, а в них — параметры «NullFile», «FileName», «Data» и «Command» и оставить среди них только нужные.

Если в раздел ShellNew поместить несколько разных полей для создания файла, то выполняться их указания будут согласно приоритету в последовательности «NullFile», «FileName», «Data», "Command".

В разделе (рис. 14.4, справа) с именем «внутреннего» названия расширения могут находиться разделы DefaultIcon, параметр "По умолчанию" которого определяет иконку этого типа файлов,[36] а также раздел «shell», в котором располагаются команды контекстного меню правой кнопки мыши данного типа файлов.

Название действия, которое отображается в меню правой кнопки мыши над файлом данного типа, может быть либо названием одного из подразделов раздела shell, либо значением параметра "По умолчанию" этого подраздела (в последнем случае название самого подраздела не имеет значения[37]). В подразделе с именем команды контекстного меню располагается подраздел command, в параметре "По умолчанию" которого указан полный путь к программе, которая должна выполнить данное действие (рис. 14.5).


Рис. 14.5. Вот место, где указывается программа, открывающая файл

Если для какого-либо типа файлов параметр Default Icon не указан, то в качестве иконки для него используется стандартная иконка документа. Если же в системном реестре вообще нет указания на такой тип файлов, то для него берется иконка с изображением логотипа Windows.

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

Во-первых — теперь вы можете свободно редактировать выпадающее меню "Создать…". Для удаления лишних пунктов оттуда надо просто провести поиск по словам FileName, NullFile и др. и удалить параметры ShellNew в тех найденных разделах, которые не нужны.

Вы можете удивиться, найдя весьма много параметров FileName и NullFile, причем в разделах типов файлов, которые не присутствуют в меню "Создать…". Это чаще всего «обломки» предыдущих инсталляций программ. Дело в том, что для того, чтобы название типа файлов появилось в меню "Создать…", нужно правильное оформление всех разделов реестра, посвященных данному типу: и раздел с «внутренним» именем, и раздел shell, и в нем обязательно — раздел с именем open и т. д.

Для добавления какого-либо пункта в меню "Создать…" нужно найти раздел с именем нужного расширения и добавить в него подразделы с его «внутренним» именем и именем ShellNew, а там — указать параметр NullFile (или FileName с именем файла). Ну и, естественно, проверить наличие и правильность оформления раздела с «внутренним» именем этого расширения.

"Обломки" инсталляций — разделы с именами типов файлов могут, к примеру, образоваться так. Программа Microsoft Photo Editor при своей установке поместила в реестр записи о том, что файл с расширением. gif имеет «внутреннее» имя «giffile», создала под него в реестре два раздела —.gif и giffile, прописав там все, что нужно. При установке программы ACDSee она в разделе. gif заменила «внутреннее» имя этого типа на свое — ACDSee.GIF и создала под него раздел с именем "ACDSee.GIF", куда и разместила свои команды. А прежний-то раздел, «giffile», остался! Но он теперь уже не соответствует никакому типу файлов, так как ни у одного расширения нет такого «внутреннего» имени. После длительной эксплуатации системы таких обломков накапливается достаточно много. Поэтому поиск нужного раздела надо начинать именно со списка расширений, а потом уже переходить к списку «внутренних» имен, узнав нужное.

В некоторых разделах, посвященных типам файлов, можно найти еще и другие разделы. Например, раздел «ddeexec» в подразделе с именем команды раздела shell какого-либо типа файлов содержит те команды DDE, которые должны использоваться. (Некоторые программы способны воспринимать команды операционной системы при открытии того или иного типа файлов и, к примеру, открывать их не в новом окне, а в своем подокне. Это называется Dynamic Data Exchange, DDE — динамический обмен данными.)

В некоторых разделах встречаются параметры Content-Type. Это — указания Интернет-браузеру на тот случай, если он встретит подобный файл в Интернете. Существуют и другие возможные виды разделов, но подробное их описание выходит за рамки данной книги.

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

Каталог имеет только два «внутренних» имени и тем самым два подраздела — Folder и Directory, соответствующие его пустому и непустому состояниям. В каждом из этих подразделов содержатся команды, применяемые ко всему каталогу. В подразделе с именем "*" находятся команды, применяемые ко всем типам файлов, а в подразделе Unknown — к файлам, которые в реестре не зарегистрированы (то есть в нем нет подразделов с именами, соответствующими их расширениям). Подраздел с именем Drive соответствует логическому диску.

В подразделе с «внутренним» именем типа файла может содержаться также параметр EditFlag. В зависимости от его значения запрещаются те или иные параметры редактирования действий с этим типом файлов с помощью окна Вид-Параметры-Типы файлов, вызываемого из «Проводника». Вы, наверное, замечали, что редактировать через это окно действия с каталогом или логическим диском нельзя? Так вот это именно из-за значения параметра EditFlag.[38]

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

Обьектами в операционной системе может стать все, что угодно — программы, папки, компоненты программ и др. Строго говоря, обьект в программистском понимании — это все, что имеет имя и к чему можно обращаться, как к единому целому.

Этой возможностью пользуются разработчики программ, интегрирующихся в систему. Служебные папки, такие, как Панель управления, Удаленный доступ к сети, Принтеры, которые вы наверняка в свое время безуспешно искали на жестком диске, являются именно такими обьектами и имеют свои идентификаторы. Идентификаторы также имеют и реальные папки, выполняющие в системе какие-либо функции, например, Рабочий стол, Корзина. Вы можете даже дать такой идентификатор какой-либо из своих папок (тогда ее, в частности, можно будет включить в окно "Мой компьютер", как показано на рисунке).


Совет. Вот как это можно сделать

1. Откройте раздел реестра HKEY_CLASSES_ROOTCLSID и добавьте туда раздел с именем {FD4DF9E0-E3DE-11CE-BFCF-….любые 12 цифр и букв…}. Тем самым вы создадите еще один идентификатор обьекта Windows. (Вообще говоря, и остальные цифры могут быть произвольными. Важно лишь, чтобы в реестре не оказалось двух одинаковых идентификаторов.)

2. Добавьте в этот раздел параметр По умолчанию = "Название папки". Здесь введите то имя, под которым вы хотите, чтобы папка отображалась в окне "Мой компьютер".

3. Добавьте в этот раздел подразделы с параметрами:

— DefaultIcon и параметр по умолчанию там — путь к желаемой иконке папки.

— InProcServer32 и параметр по умолчанию там — "shell32.dll", а также параметр «ThreadingModel» со значением «Apartment».

— Shell, в нем подраздел с именем, соответствующим желаемому названию команды по умолчанию для папки (например, "Открыть"), а в нем подраздел Command (то есть так же, как и для любого обычного типа файлов). Введите строку "c: windowsexplorer /n / root…путь к нужной папке…" в качестве значения параметра по умолчанию в подразделе Command. Можете добавить в раздел Shell и другие команды в таком же виде.

— ShellEx, в нем подраздел PropertySheetHandler, а в нем — подраздел с именем, равным имени всего раздела, который вы создали для своей папки (то есть {FD4DF9E0-E3DE-11CE-BFCF-….любые 12 цифр и букв…}). Это, впрочем, не обязательно, но желательно.

— ShellFolder, а в нем — параметр Attributes со значением 0.

Теперь ваша папка стала системным обьектом — таким же, как, скажем, и "Удаленный доступ к сети", «Принтеры». У нее есть свой идентификатор — это длинное выражение в фигурных скобках. Если вы добавите его в качестве имени подраздела в раздел HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionexplorermycomputerNameSpace, то она появится в окне "Мой компьютер" (имя у нее там будет то, которое вы задали на шаге 2). А чтобы разместить ее на Рабочем столе, добавьте ее идентификатор рядом в раздел DesktopNameSpace раздела Explorer.

А если вместо строки "c: windowsexplorer…" указать путь к какой-нибудь программе, то тогда получится, что ярлык этой программы вы поместите в окно "Мой компьютер" и сможете запускать ее прямо оттуда!

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

Совет

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

{20D04FE0-3AEA-1069-A2D8-08002B30309D} — "Мой компьютеp"

{645FF040-5081-101B-9F08-00AA002F954E} — «Коpзина»

{208D2C60-3AEA-1069-A2D7-08002B30309D} — "Сетевое окpужение"

{FF393560-C2A7-11CF-BFF4-444553540000} — "History"

{992CFFA0-F557-101A-88EC-00DD01 °CCC48} — "Удаленный доступ к сети"

{21EC2020-3AEA-1069-A2DD-08002B30309D} — "Панель управления"

{2227A280-3AEA-1069-A2DE-08002B30309D} — "Принтеры"

Если в «Проводнике» вы создадите папку с именем Имя. Идентификатор, то она превратится в соответствующую папку (верно не для всех идентификаторов, скажем, новый "Мой компьютер" вам так создать не удастся). А добавив параметр InfoTip с строкой в качестве значения в один из таких разделов, можно организовать всплывающую подсказку для соответствующей папки. Добавив некоторые подобные папки в "Главное меню", можно получить весьма интересные результаты.

В параметре "По умолчанию" каждого подраздела раздела CLSID располагается название обьекта, так что вы можете в какой-то степени узнать, для чего тот или иной раздел предназначен.

В каждом подразделе раздела CLSID с именем, соответствующем тому или иному идентификатору, находится подраздел InprocServer или InprocServer32, в параметре "По умолчанию" которого указана библиотека,[39] содержащая программы работы с этим обьектом.

С помощью идентификаторов можно редактировать контекстное меню правой кнопки мыши различных файлов, добавляя туда команды работы с этими файлами. Так, к примеру, происходит при установке программы WinZip, после которой в контекстном меню каждого файла и папки появляется пункт "Add to Zip". Многие антивирусные программы, например, Antiviral Toolkit Pro, позволяют вызывать их из контекстного меню какого-либо файла для проверки именно его, помещая команду своего вызова в это меню.


Чтобы добавить возможность вызова программы из какой-либо библиотеки для работы с тем или иным типом файлов, в разделе CLSID создается подраздел вида {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} и как-нибудь именуется в его параметре "По умолчанию". Затем в этом подразделе создается подраздел InprocServer, а уже в его параметре "По умолчанию" указывается путь к библиотеке, в которой располагаются программы для работы с нужным типом файлов.

Далее в подразделе с именем, равным «внутреннему» имени нужного типа файла или его расширению, создается подраздел ShellEx. В нем могут располагаться так называемые «обработчики» — подразделы с именами PropertySheetHandler, DropHandler и т. д., предназначенные для задания различных способов вызова программ для работы с файлами этого типа. И уже именно в них помещаются разделы (с произвольными именами, обычно отражающими названия программ, для которых они предназначены), в параметрах "По умолчанию" которых указываются соответствующие номера идентификаторов.

Идентификаторы, которые указаны в параметрах "По умолчанию" подразделов раздела ContextMenuHandler, добавляют команды связанных с ними библиотек в контекстное меню правой кнопки мыши. Если добавить идентификатор в подраздел раздела DragAndDropHandler (естественно, предварительно создав сам этот раздел), то команда, соответствующая этому идентификатору, будет вызвана, когда файл того типа, для которого все это расписывается, переносится в какую-либо папку при нажатой правой клавише мыши. То, что указано в разделе DropHandler, срабатывает, когда что-либо переносится мышью на сам файл, — например, когда WinRar добавляет файл в архив при его перетаскивании на иконку архива.

Если в разделе ShellEx раздела реестра с именем, соответствующим «внутреннему» имени какого-либо типа файла или его расширению, создать подраздел PropertySheetHandler, а в нем — подраздел с идентификатором в параметре "По умолчанию", то команда из библиотеки, на которую указывает этот идентификатор, выполняется при вызове пункта «Свойства» контекстного меню правой кнопки мыши файла этого типа и позволяет добавлять к окну свойств файла дополнительные вкладки. Например, так поступает программа DFolder (о ней рассказано в следующей главе), присоединяя к окну свойств папок вкладку с указанием занимаемого файлами этой папки физического места на жестком диске (рис. 14.5).


Рис. 14.5. Возможность появления в меню «Свойства» каждой папки такого окна, как справа, дана параметром в разделе PropertySheetHandler, показанном слева

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

Параметры и разделы, изменяющие контекстное меню, вносятся программами в реестр при их инсталляции или из диалоговых окон самих программ.

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

В операционных системах Windows 2000 и Windows XP данный раздел реестра устроен практически так же, как описано выше.

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

1. В начале раздела, в подразделе с именем расширения этого типа файлов с точкой вначале. Здесь приводится «внутреннее» имя этог типа файлов, а также информация о включении данного типа в меню "Создать…".

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

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

Пользовательский модуль

Следующий раздел системного реестра, если идти по порядку — HKEY_CURRENT_USER. Это — информация, которая меняется от пользователя к пользователю. При входе в операционную систему под другим именем эта часть реестра будет другая. Он состоит из большого количества подразделов.

В разделе AppEvents записана информация о звуковых схемах и назначенных звуках в системе. Именно здесь хранятся те данные, что вы вводите в диалоге Звук Панели управления.

Раздел Clock, как нетрудно понять, посвящен часам — именно тем, что торчат в углу панели задач. Здесь — все их параметры.

Раздел Control Panel содержит в себе информацию о настройках внешнего вида операционной системы. Это, пожалуй, один из самых интересных разделов реестра, так как именно здесь настраиваются разного рода «красивости» интерфейса Windows. Подраздел Appearance содержит в себе информацию о всех возможных цветовых схемах Windows. Эти схемы закладываются в реестр при его создании и именно отсюда берутся данные для окна Свойства экрана — Оформление (рис. 14.6).


Рис. 14.6. А вот и схемы оформления…

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

В подразделе Cursors хранится информация о выбранном наборе изображений курсора и о всех стандартных наборах таких изображений.

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

Другие подразделы раздела Control Panel имеют чисто служебное значение. Там могут храниться данные о назначении кнопок мыши и т. д.

Раздел Identities, если он у вас есть, используется почтовой программой Outlook Express для хранения информации об имеющихся идентификационных записях (попросту — своих пользователях). Здесь расположены настройки Outlook Express для каждого из пользователей, каждому из которых отведен свой подраздел. Например, в одном из многочисленных подразделов раздела Identities можно найти параметр WindowTitle (а можно и не найти). Именно в нем записана та строка, которая отображается в заголовке Outlook Express, на самой верхней синей полосе окна. Также в этом разделе хранится информация о всех учетных записях почты и новостей всех пользователей Outlook Express, за исключением активного — того, на которого Outlook Express была настроена при последнем выходе из этой программы.

Раздел Keyboard layout посвящен раскладкам клавиатуры, а InstallLocationsMRU — путям к некоторым драйверам. Оба раздела — чисто служебные и особого интереса не представляют. В разделе Network находятся параметры локальной сети, если компьютер к ней подключен. Изменять параметры всех этих разделов из редактора реестра не стоит.

В разделе RemoteAccess записаны параметры соединений удаленного доступа: имена соединений, телефоны и некоторые настройки. Однако паролей, столь часто интересующих хакеров, тут нет — они хранятся в файлах. pwl в папке Windows в зашифрованном виде.

В HKEY_CURRENT_USER могут быть и другие разделы, созданные разными установленными программами.

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

В подразделе Microsoft расположены настройки установленных на компьютере программ, выпущенных этой фирмой. В его подразделе Internet Account Manager находятся настройки учетных записей текущего пользователя программы Outlook Express. Рядом с ним можно видеть подраздел с именем этой программы, тоже полный всяческих настроек.

При смене текущего пользователя Outlook Express содержимое этих разделов заменяется на соответствующее из раздела HKEY_CURRENT_USER Identities. Рядом — раздел Internet Explorer: чьи настройки там находятся, думается, ясно.

Для того, чтобы через целый лес из имен программ и фирм добраться до настроек вашей операционной системы, найдите в разделе Software подраздел Microsoft, а в нем — подраздел Windows. Там откройте подраздел CurrentVersion (обычно он один). И вот — перед вами еще один блок настроек операционной системы! Количество подразделов здесь может варьировать — в зависимости от «навороченности» вашей Windows: и Internet Explorer, и MS Office могут добавить сюда пару компонентов.

В подразделе Applets

(ключа HKEY_CURRENT_USERSoftware MicrosoftWindowsCurrentVersion, если вы еще не забыли) расположены настройки стандартных программ Windows. Тут и старые знакомые Defrag и FreeCell, Hearts и Paint, и System Monitor с Media Player'ом. Иногда вы можете найти параметры с названиями вроде «WindowOriginY» или просто «Y» или «X». Это — записано местоположение окна программы при последнем выходе из нее, чтобы при следующем запуске оно располагалось на том же самом месте, что и в прошлый раз. (А вас никогда эта способность Windows не удивляла?).

В подразделе Internet Settings вы также встретите некоторые настройки браузера Internet Explorer. С ними особо разбираться не следует — все равно все можно настроить через диалоговые окна самого браузера.

В подразделе Policies можно запретить интерфейсу Windows отображать определенные свои компоненты. Установив параметр NoNetHood раздела Explorer в 1, вы скроете пиктограмму Сетевого окружения с Рабочего стола. А установив параметр NoDispScrSavPage раздела System в 1, вы запретите отображать вкладку установки скринсейвера в Свойствах экрана, тем самым в определенной степени предотвратив чью-нибудь злую шутку по установке пароля на скринсейвер в ваше отсутствие. В принципе названия почти всех параметров в этом разделе вполне понятны. Только не ставьте параметр DisableRegistryTools в 1 — после этого вы больше regedit.exe запустить не сможете. Придется восстанавливать реестр как после краха системы или писать специальный. reg — файл для удаления этого параметра. Или искать другие редакторы реестра, созданные не Microsoft.

Подраздел Run — это то место, которое вам надо посещать как можно чаще. Это — одно из двух мест в системном реестре, где прописаны пути к автозагружаемым программам. Указав здесь путь к программе, вы добьетесь того, что она будет загружаться каждый раз при запуске Windows. Этим местом часто пользуются троянские программы (те которые выполняют какие-либо вредоносные функции по отправке информации на удаленный компьютер, например, паролей для доступа в Интернет) для своего автоматического запуска при загрузке компьютера (чтобы, скажем, при установлении соединения с Интернет отправить своему создателю ветвь HKEY_CURRENT_USERRemoteAccess вашего реестра). Поэтому если вы здесь обнаруживаете запись, ведущую на подозрительный файл — смело удаляйте или хотя бы попробуйте выяснить, откуда эта программа и что она делает. Однако это не единственное место автозапуска программ — аналогичный раздел есть и в HKEY_LOCAL_MACHINE.

В составе Windows98 есть программа msconfig.exe (рис. 14.7). Она работает и в Windows95. С помощью этой программы можно просмотреть список автозагружаемых программ и удалить явно лишние.


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

Расположенный рядом подраздел RunOnce отличается от подраздела Run тем, что программы, пути к которым записаны в нем, запустятся всего лишь один раз, после чего их имена отсюда будут выкинуты. Этим ключом часто пользуются деинсталляторы, — вы ведь наверняка видели сообщение деинсталлятора, что "для завершения деинсталяции требуется перезагрузка компьютера"? При этом деинсталлятор прописывает сюда код для удаления оставшихся файлов, которые до перезагрузки использовались операционной системой и потому удалены быть не могли. Трояны могут прописываться и здесь, так что регулярно просматривать этот подраздел — дело полезное.

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

Вас никогда не интересовало, каким образом Windows сохраняет информацию о расположении значков на Рабочем столе и в папках, которые вы оставили открытыми, выходя из Windows? Если интересовало — то загляните в подраздел Streams. Видите там 200 подразделов? Это — заготовки для сохранения информации о расположении значков. В некоторых из подразделов можно найти параметр ViewView. Здесь такая информация уже запомнена. Открыв этот параметр двойным щелчком мыши, можно увидеть длинное шестнадцатиричное число, а справа — его «перевод» на обычный символьный язык. И среди мешанины символов будут видны (конечно, не у всех таких параметров) имена ваших файлов, находящихся в какой-то одной папке. Значит, именно в этом разделе хранится информация о расположении значков в ней. Вы можете найти раздел с параметром ViewView, содержащим имена файлов на вашем Рабочем столе, экспортировать его в файл реестра и затем импортировать обратно при необходимости восстановить расположение иконок на экране. Но такой экспорт надо будет производить после каждого важного изменения расположения или состава значков Рабочего стола.

В подразделах RunMRU и Doc Find Spec MRU содержится то, что вы когда-либо вводили в окна "Выполнить…" и "Найти…" (рис. 14.8). Почистите эти разделы или, наоборот, дополните их согласно вашей необходимости, если желаете.


Рис. 14.8. А вот где находится содержимое окна Пуск-Выполнить.

В подразделах Shell Folders и User Shell Folders содержится информация о расположении служебных папок Windows, например, Cookies или History. Если вы пожелаете переместить их в другое место или переименовать, то внесите сюда изменения.

Остальные подразделы и параметры подраздела Explorer настраивают мелкие особенности «Проводника».

Большинство других подразделов подраздела CurrentVersion являются чисто служебными и особого интереса не представляют. Там записаны некоторые параметры некоторых программ из поставки Windows — и не более того. Хотя не забудьте глянуть в ProfileReconciliation, если будете через реестр менять расположение папок Cookies и History.

В разделе HKEY_CURRENT_USERSoftwareVB and VBA Program Settings по умолчанию располагаются настройки для всех программ, написанных на языках Visual Basic и VBA. Поэтому загляните и сюда, если вы не нашли имени интересующей вас программы в остальной части раздела Software.

Возможно, вас несколько смутило, например, то, что, скажем, настройки браузера Internet Explorer находятся не в одном разделе, а разбросаны по всему ключу HKEY_CURRENT_USER, да и не только по нему. Но это, увы, так — браузер Internet Explorer очень тесно интегрируется в операционную систему и особенно в реестр.

Структура данного раздела реестра в операционных системах Windows 2000 и Windows XP отличается от описанной, однако многие компоненты — параметры установленных программ, самой операционной системы, описания цветовых схем настройки экрана располагаются в реестре этих систем так же, как указано выше.

Системный блок

Следующий раздел реестра — HKEY_LOCAL_MACHINE, хранилище информации о вашем компьютере и о независимых от наличия различных пользователей настройках программ. Он — самый крупный и самый важный из всех разделов реестра. При этом он содержит в себе, в одном из своих подразделов и весь раздел HKEY_CLASSES_ROOT, который вынесен в отдельный ключ реестра лишь для удобства редактирования, и все возможные варианты содержимого раздела HKEY_CURRENT_CONFIG, в который помещается информация из HKEY_LOCAL_MACHINE в зависимости от текущей аппаратной конфигурации. Как HKEY_LOCAL_MACHINE в Редакторе реестра отображается файл System.dat, то есть вся информация HKEY_LOCAL_MACHINE физически содержится именно в этом файле.

Таким образом, HKEY_LOCAL_MACHINE — первый из описанных «реальный» раздел реестра, то есть имеющий под собой "физическую природу" — файл System.dat. (HKEY_CLASSES_ROOT и HKEY_ CURRENT_CONFIG — его подразделы, а HKEY_CURRENT_USER — подраздел HKEY_USERS, второго «реального» раздела реестра).

Подраздел Config содержит в себе данные о зарегистрированных в системе аппаратных конфигурациях. Windows позволяет при регулярных изменениях состава устройств в компьютере (например, при работе с ноутбуком, который имеет «док» — присоединяемую часть с CD-ROM, модемом и др.) не устанавливать и удалять каждый раз драйверы для всех этих устройств, а создать фиксированный набор драйверов для каждого из этих составов устройств и менять эти наборы при необходимости. Такой набор называется аппаратной конфигурацией и устанавливается через окно Панель управления — Система — Конфигурации.

В настоящее время в связи с развитием новых технологий USB и др. устройств "горячего подключения" необходимость в различных аппаратных конфигурациях почти отпала, но их поддержка в Windows присутствует.[40]

В ключе Config под своими номерами располагаются записи о всех созданных конфигурациях, а при загрузке компьютера или изменении конфигурации соответствующий раздел «отражается» в реестре под видом раздела HKEY_CURRENT_CONFIG. Если аппаратная конфигурация одна, то и в разделе Config есть только один подраздел, совпадающий с ключом HKEY_CURRENT_CONFIG.[41]

В разделе HKEY_LOCAL_MACHINEConfig находятся и некоторые настройки операционной системы. Например, в ключе Сonfig001 (номер конфигурации)displaysettings указываются шрифты, используемые Windows по умолчанию, например, в «Блокноте». А в параметре Resolution этого раздела расположено указание на экранное разрешение. (Можете его поменять на любые цифры, хоть на 1000*200, и, если ваша видеокарта позволит, то именно такое разрешение экрана и будет.)

Подраздел DesktopManagement посвящен работе системы с библиотекой deskmgmt.dll из каталога WindowsSystem, отвечающей за работу операционной системы с процессором, памятью и другими устройствами материнской платы компьютера. Здесь записаны команды, обратившись с которыми из другой программы к этой библиотеке, можно получить соответствующие данные.

Подраздел Enum содержит информацию о распознанных операционной системой устройствах компьютера.

В Windows 9x есть несколько важных программных компонентов, отвечающих за обнаружение устройств и предоставление их для работы другим компонентам системы. Основными среди них являются два — диспетчер конфигурации и энумератор. При загрузке компьютера диспетчер конфигурации опрашивает BIOS и получает от него информацию о всех устройствах, не поддерживающих стандарт Plug&Play, а затем заносит ее в реестр, в этот самый раздел Enum. Затем в дело вступает программа-энумератор, которая считывает из реестра информацию о не-Plug&Play устройствах, а затем опрашивает имеющиеся в компьютере Plug&Play-устройства и составляет список всех имеющихся устройств, назначив каждому единственный идентификатор — так называемый HardwareID.

Затем основная роль вновь переходит к диспетчеру конфигурации, который на основании предоставляемой энумератором информации о наличии устройств и их характеристике (Plug&Play или нет) распределяет между устройствами прерывания, адреса ввода-вывода и другие ресурсы системы. В этом ему помогают специальные подпрограммы — «арбитры», которые изменяют выделяемые ресурсы так, чтобы не было ресурсов, используемых одновременно двумя устройствами.

Вначале распределяются ресурсы между не-Plug&Play устройствами (информация о которых пришла еще из BIOS), а затем — между Plug&Play, так как последние умеют работать с разными настройками распределения ресурсов без изменения своей аппаратной части, и переназначить им, например, прерывания можно программно. Все внесенные изменения фиксируются в разделе Enum, а также в разделе HKEY_LOCAL_MACHINESystemCurrentControlSet ServicesClass, содержащем совокупность информации о распознанных устройствах, а также о загруженных для них драйверах, на подразделы с данными о которых в разделе Enum имеются ссылки.

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

Подразделы Network и Security содержат малозначащие параметры сети Microsoft Network (интересно, в России кто-нибудь хоть когда-нибудь ей пользовался?).

И вот, наконец, — второй подраздел Software, на этот раз уже состоящий из универсальной для всех пользователей данного компьютера информации. Как и ранее, он состоит из разделов с именами компаний-производителей с подразделами внутри них, посвященных отдельным программам. В разделе HKEY_LOCAL_MACHINESoftwareMicrosoft расположены настройки самой Windows и ее компонентов, а также всех программ Microsoft. Например, в подразделе Active Setup этого раздела находятся параметры системы установки компонентов Windows через Internet — Active Setup. В его подразделе Installed Components вы увидите все компоненты Internet Explorer, которые вы выбирали (или нет) при установке этого браузера. В подразделе Shared Tools раздела HKEY_LOCAL_MACHINESoftwareMicrosoft находится список программ и библиотек пакета MS Office, которыми могут пользоваться другие компоненты этого пакета (скажем, "галерея клипов", которая может быть вызвана из любого приложения MS Office), с указанием пути к каждому из них.

Но, конечно, как и в прошлый раз, самым интересным местом здесь будет подраздел WindowsCurrentVersion, относящийся к операционной системе. В самом CurrentVersion, даже не в его подразделах, есть весьма полезные параметры. Скажем, именно здесь находится информация, отображающаяся в верхней части окна Панель управления — Система — Общие.

Подраздел AppPaths раздела CurrentVersion — это Windows'ский аналог параметра Path из файла autoexec.bat. Можно еще назвать его реестровым собранием ярлыков программ. Здесь можно указать пути к различным программам и имена для их запуска, а затем набирать эти имена в окне «Выполнить» для вызова этих программ, не заботясь об указании пути к ним (рис. 14.9).


Рис. 14.9.Укажите в этом разделе имя для запуска программы и путь к ней и не заботьтесь о задании правильного пути в окне "Выполнить"

Подраздел Explorer опять-таки посвящен программе «Проводник», но уже — ее общим настройкам. В подразделах DesktopNameSpace и MycomputerNameSpace находятся идентификаторы тех обьектов, которые должны быть расположены на Рабочем столе и в папке "Мой компьютер", например, «Корзина» или "Удаленный доступ к сети". Вы можете удалить отсюда ненужные обьекты или, наоборот, добавить сюда желаемые, создав вначале для них идентификаторы в разделе HKEY_CLASSES_ROOT, как описано выше.

В параметрах подразделов LastCheck и LastOptimize (подраздела Explorer подраздела CurrentVersion) содержится информация о последнем моменте дефрагментации или проверки жестких дисков компьютера.

В подразделе Tips вы найдете все советы, отображающиеся при первом запуске компьютера с Windows (рис. 14.10). Их можно просмотреть и с помощью программы welcome.exe из каталога Windows.


Рис. 14.10. Склад полезных советов для окна "Добро пожаловать в Windows". (Когда вы, кстати, видели это окно в последний раз?)

Подраздел Fonts хранит в себе информацию об именах шрифтов и их соответствии названиям файлов. Вы, кстати, никогда не удивлялись, почему в «Проводнике» и в Norton Commander содержимое папки WindowsFonts выглядит по-разному (рис. 14.11)? Да потому, что Norton Commander берет информацию об именах файлов в этой папке из каталога, а «Проводник» — вот из этого раздела реестра. Почему копирование шрифтов в папку Fonts длится значительно дольше, чем в любую другую папку? Да потому, что еще в реестре их все надо прописать, да еще перед этим из каждого извлечь полное имя! Еще бы не дольше было…


Рис. 14.11. Сравните окна слева внизу и справа внизу. В чем причина разницы? В окне сверху.

В подразделе MS-DOS Emulation, в его подразделе AppCompat находится список программ MS-DOS, которые могут работать только в "Режиме MS-DOS", а не в окне "Сеанса MS-DOS" и требуют выгрузки Windows для своей работы (рис. 14.12).


Рис. 14.12. Имя этой программы было прописано здесь в реестре — и вот что вышло из попытки ее запуска. (А вы небось думали, что Windows как-то программы анализирует и думает, «пойдет» она под ней или нет? Как же…)

Из следующего подраздела реестра, MS-DOS Options, берутся параметры для диалоговых окон при настройке ярлыков программ MS-DOS для особой конфигурации "Режима MS-DOS". Именно с помощью этих параметров можно удобно настроить файлы autoexec.bat и config.sys для каждого ярлыка программы, работающей в "Режиме MS-DOS". Только настраивать их, разумеется, лучше все же через Свойства ярлыка.

Подразделы Run, RunServices, RunOnce, RunOnceEx, RunServicesOnce содержат в себе указания на программы, которые должны запуститься автоматически при запуске Windows. Выше уже рассказывалось про аналогичный раздел в ключе HKEY_CURRENT_USER, программы в котором запускались при начале сеанса работы данного пользователя, ну, а программы, указанные здесь, запустятся в любом случае. Почаще навещайте этот раздел — здесь могут прятаться трояны! (Три последних подраздела из перечисленных запустят указанную в них программу лишь один раз.) Именно здесь, в подразделе Run находится команда вызова программы резервирования реестра scanregw.exe.

В разделе HKEY_LOCAL_MACHINE SOFTWAREMicrosoftWindowsCurrent VersionPolicies, в его подразделе Ratings есть параметр Key. Сотрите его, если вы случайно в процессе исследования Microsoft Internet Explorer задали пароль на ограничение доступа к отдельным ресурсам Интернета (Свойства обозревателя — Содержание — Ограничение доступа) и благополучно забыли его.

Если вы хотите изменить путь к установочным файлам Windows (например, если вы поставили Windows с компакт-диска, а затем поместили ее дистрибутив на винчестер и желаете, чтобы при любой установке драйверов или своих компонентов она обращалась именно туда), то введите в параметр SourcePath раздела HKEY_LOCAL_MACHINE SOFTWAREMicrosoftWindowsCurrent VersionSetup нужный путь.

В подразделе Time Zones приведен список настроек всех возможных часовых зон из меню настройки местного времени. (Параметры же установленной временной зоны размещаются ниже, в разделе HKEY_LOCAL_MACHINE SystemCurrentControlSetcontrolTimeZoneInformation.)

Подраздел Uninstall (подраздела Explorer подраздела CurrentVersion) содержит в себе пути и параметры деинсталляторов для всех программ, которые допускают такую возможность. Именно отсюда берется информация для представления в окне Панель управления — Установка и удаление программ. Параметр DisplayName определяет название программы, которое в этом окне будет отображаться.

Если вы хотите напугать какого-нибудь любителя "Color Lines" или «Сапера», кто включит ваш компьютер без вашего ведома, вставьте в раздел HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindows CurrentVersionWinlogon параметры LegalNoticeCaption и LegalNoticeText с каким-нибудь текстом. Тогда при загрузке Windows будет отображаться окошко с этими данными (рис. 14.13).


Рис. 14.13. Любителя без спросу поиграть на вашем компьютере в «Сапера» подобная надпись может здорово напугать

Ну, а теперь закончим описание раздела HKEY_LOCAL_ MACHINESoftwareMicrosoftWindows CurrentVersion и перейдем к самому последнему подразделу ключа HKEY_LOCAL_MACHINE — System, к его единственному подразделу CurrentControlSet. В этом подразделе содержатся два ключа: Сontrol и Services. Параметры этой части реестра не менее важны, чем, скажем, подраздела Enum, так как содержат в себе многие настройки системы. Но большая их часть — чисто служебная и изменять их через редактор реестра не стоит. Впрочем, можно слегка пробежаться по наиболее интересным разделам.

В подразделе FileSystem записаны некоторые параметры работы операционной системы с носителями информации с другой файловой системой вроде CD-ROM.

Подраздел Keyboard layouts содержит список возможных раскладок клавиатуры и имена соответствующих им файлов с раскладками (установлены могут быть отнюдь не все эти файлы).

Подраздел Nls посвящен кодовым страницам, которые поддерживаются системой. В его подразделе Codepage каждому номеру кодовой страницы (например, «1251» — кодировка Windows-1251) поставлен в соответствие файл, содержащий информацию об этой кодовой странице, а в подразделе Locale — имена этих кодовых страниц. Иногда проблемы с отображением русских символов в некоторых программах вроде AdobePhotoshop можно устранить, поставив значение параметра «1252» в разделе HKEY_LOCAL_MACHINESystem CurrentControlSetcontrolNlsCodepage в "CP_1251.nls".

Подраздел PerfStats посвящен состоянию системы и несколько подробнее описан ниже.

Подраздел SessionManager посвящен старым приложениям MS-DOS. В подразделе CheckBadApps содержится список программ MS-DOS, которые могут быть несовместимы с Windows. Наверное, вы пробовали из-под Windows запустить Norton Commander для MS-DOS и получали сообщение, что программа некорректно работает в этой операционной системе? Так вот для каждой программы MS-DOS, при попытке запуска которой выдается такое сообщение, есть свой подраздел с именем ее запускающего файла в подразделе CheckBadApps, а в нем — параметр с именем запускающего файла (рис. 14.14), в котором указано число. Это число — указатель на номер справочного раздела в файле Apps.hlp из папки WindowsHelp, в котором рассказано, почему данная программа некорректно работает в Windows.


Рис. 14.14. Для любой программы MS-DOS можно создать здесь раздел, и тогда при попытке ее запуска будет выводиться подобное предупреждение.

Подраздел CheckBadApps400 имеет то же самое предназначение, что и предыдущий, но в нем размещены имена программ для Windows 3.х, а не для MS-DOS.

Подразделы подраздела SessionManager с буквами «DLL» в имени хранят в себе имена системных библиотек, с которыми работает Windows, в зависимости от имени раздела — 16-ти или 32-х — разрядных. А в подразделе WarnVerDLLs приводятся имена библиотек, совместимость которых с Windows вызывает у нее "подозрения".

Подраздел TimeZoneInformation (подраздела SystemCurrent ControlSetcontrol) хранит в себе информацию о текущей временной зоне.

В следующем большом подразделе HKEY_LOCAL_MACHINE SystemCurrentControlSetServices содержится в основном служебная системная информация. Некоторые из его подразделов очень важны для операционной системы.

Подраздел Arbitrators содержит информацию программ-арбитров, о которых шла речь выше.

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


Рис. 14.15.Основа основ компьютера — раздел устройств. Все окно «Устройства» — здесь. И даже разбиение списка устройств на ветки в этом окне такое же, как и ключей в реестре

Таким образом, этот подраздел фактически является "реестром в реестре" — базой данных по устройствам, «железу», установленным в компьютере. В него включена информация, поставляемая энумератором и диспетчером конфигурации и записанная в разделе HKEY_LOCAL_MACHINEEnum, а также данные о загруженных драйверах устройств и их параметрах (к примеру, строка инициализации модема помещается в ключе ClassModem000Init). Вспомните, кстати, что в Enum'е были ссылки на драйвера устройств вида Driver = DiskDrive001. Так вот это были ссылки именно на подразделы этого раздела Class, в чем нетрудно убедиться.

То есть — раздел HKEY_LOCAL_MACHINESystemCurrent ControlSet ServicesClass является основным держателем информации об устройствах компьютера, назначенных им ресурсах и загруженных для них драйверах. Именно он поставляет информацию в окно Панель управления — Система — Устройства. Раздел HKEY_LOCAL_ MACHINEEnum тесно связан с этим разделом и хранит «технические» данные для каждого устройства. В разделе HKEY_DYN_DATA располагаются данные о текущем состоянии каждого из устройств.

В разделах HKEY_LOCAL_MACHINESystemCurrentControlSetServices Class и HKEY_LOCAL_MACHINEEnum размещается информация лишь об имеющихся устройствах, об их характеристиках и назначенных ресурсах. Информация же о конкретной работе устройств, о том, исправны они или нет, находится в разделе реестра HKEY_DYN_DATA, который постоянно находится в оперативной памяти.

Остальная часть раздела HKEY_LOCAL_MACHINESystemCurrentControl SetServices содержит данные некоторых программ и особого интереса для пользователя не представляет.

В системном реестре Windows 2000/XP по сравнению с реестром Windows 9х похожую структуру имеет лишь подраздел HKEY_LOCAL_MACHINESoftware, однако настройки операционной системы, в частности, таблица соответствия имен шрифтов и их файлов, находятся не только в его подразделе MicrosoftWindows, но и в подразделе MicrosoftWindowsNT. Остальные подразделы имеют другую структуру и другое предназначение. Кроме того, к перечисленным выше местам реестра, указанные в которых программы запускаются автоматически при старте Windows, в Windows 2000/XP добавились еще параметры Userinit раздела HKEY_LOCAL_MACHINE SoftwareMicrosoftWindows NTCurrentVersionWinlogon и Load раздела HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindows.

Общий модуль

HKEY_USERS — второй «реальный» раздел реестра. Он состоит из одного или двух больших подразделов. В любом случае один из них называется. Default и является разделом HKEY_CURRENT_USER для конфигурации пользователя Windows по умолчанию (если в Windows зарегистрировано несколько пользователей, то ее можно загрузить, нажав Esc при запросе пароля на входе в Windows). Если в Windows зарегистрирован один пользователь, то раздел. Default будет единственным и совпадать с HKEY_CURRENT_USER, а если нет, то в HKEY_USERS будет еще один раздел, чье имя будет совпадать с именем текущего пользователя, и именно этот раздел будет отражен в реестре еще раз под именем HKEY_CURRENT_USER.

В системном реестре Windows 2000/XP раздел HKEY_USERS тоже присутствует и выполняет ту же функцию — хранит в себе варианты раздела HKEY_CURRENT_USER для каждого из пользователей, зарегистрированных в операционной системе.

Ключи конфигурации

HKEY_CURRENT_CONFIG — это описание текущей конфигурации оборудования компьютера. Этот раздел является отражением одной из ветвей раздела HKEY_LOCAL_MACHINEConfig, в котором описаны все созданные в системе конфигурации оборудования. Сами эти конфигурации создаются с помощью диалогового окна Панель управления — Система — Конфигурации. Когда конфигурация меняется, меняется и содержимое раздела HKEY_ CURRENT_CONFIG — он начинает «отражать» уже другую ветвь раздела HKEY_LOCAL_MACHINE Config.

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

В системном реестре Windows 2000/XP этот раздел устроен совершенно по-другому, хоть и выполняет похожую функцию.

Железный ключ

HKEY_DYN_DATA — пожалуй, самый недокументированный раздел реестра. Отчасти это обьясняется тем, что данные в этом разделе создаются и корректируются автоматически. Любое вмешательство пользователя может лишь нарушить работу компьютера, — здесь нет ничего такого, что требовало бы необходимости редактирования через Редактор реестра. Интерес этот раздел представлял, скорее всего, лишь для разработчиков самой Windows на стадии ее отладки, а также, может быть, для разработчиков драйверов различных устройств компьютера. Но, так как уж он присутствует в системном реестре, то и программа regedit.exe его отображает.

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

В разделе HKEY_ DYN_DATA находятся два подраздела. Первый из них, HKEY_DYN_ DATAConfig Manager Enum посвящен состоянию «железа» компьютера. Если в разделе HKEY_LOCAL_MACHINESystemCurrentControlSet ServicesClass расположена информация о том, какие устройства установлены в компьютере, то в этом разделе — данные об их функционировании, о том, как они работают — исправно или нет. Информация в окне Панель управления — Система — Устройства формируется из содержимого обоих этих разделов.

Второй же раздел, PerfStats — это раздел статистики. Он связан (но не является «отражением», как, скажем, HKEY_CLASSES_ROOT) с разделом HKEY_LOCAL_MACHINESystemCurrentControlSetcontrolPerf Stats (рис. 14.16) и содержит статистическую информацию по параметрам этого раздела. Можно сказать, что в HKEY_LOCAL_ MACHINESystemCurrentControlSetControl PerfStats перечислены параметры статистики системы, а в HKEY_DYN_DATA PerfStats — их значения. Именно отсюда берет свои данные программа Системный монитор.


Рис. 14.16. Статистический центр системы. Хотите посмотреть эти данные? Не лазьте в реестр — запустите Системный монитор, и увидите то же самое

Назначение раздела HKEY_DYN_DATA — постоянно находиться в оперативной памяти и поставлять системе информацию о состоянии устройств компьютера по первому ее требованию. Чтобы в этом случае не пришлось ничего загружать в память, а все там уже было. Можно было бы, конечно, перенести всю эту информацию в раздел HKEY_ LOCAL_MACHINE, в соответствующие ключи, но тогда быстродействие системы бы серьезно замедлилось. А так — раздел не очень большой и не содержит в себе ничего, кроме данных для системы, — ни названий, ни пояснений. Чисто служебная информация.

В системном реестре Windows 2000/XP данный раздел отсутствует.

* * *

Возможно, конечно, что Ваш реестр в деталях несколько отличается от структуры, которая была здесь описана. Это вполне естественно, так как содержимое реестра во многом зависит от набора программ, установленных на компьютере, да и от самой операционной системы. Наличие или отсутствие установленных Microsoft Internet Explorer и Microsoft Office сильно влияют на состав реестровых ключей и параметров. Но общий план — всегда одинаков.

Куски реестра в файлах

При экспортировании фрагмента реестра или его всего на жестком диске создается обычный текстовый файл с расширением. reg. Файл реестра имеет жестко регламентированную структуру. На рис. 14.17 показан пример раздела реестра и он же, экспортированный в текстовый файл — обратите внимание на структуру этого файла.


Рис. 14.17. Фрагмент реестра, экспортированный в текстовый файл.

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

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

Ниже команды Regedit4 находятся ключи, вносимые в реестр. Для каждого вносимого в реестр имени раздела должна быть выделена отдельная строка. Полное имя раздела (сокращения не допускаются) помещается в квадратные скобки. Имена параметров этого раздела приводятся по одному на строке, начиная за следующей сразу за именем раздела, в кавычках, рядом на той же строке — их значения. Значения строковых параметров должны приводиться в кавычках, значения параметров типа Dword — в виде шестнадцатиричной строки dword:00000000 (без кавычек), значения двоичных параметров — в шестнадцатиричной системе в виде строки hex:14,00,00,00 (без кавычек).

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

С помощью такого файла можно также и удалять записи из системного реестра. Для этого нужно перед именем раздела поставить знак «-»: "[-HKEY_LOCAL_MACHINE……..]".

Если хотите более подробно поисследовать формат файлов. reg — экспортируйте большой раздел в такой файл и посмотрите, что у вас получилось.

Немного полезных советов

1. Если вы используете браузер Microsoft Internet Explorer, то наверняка знакомы с эмблемой Microsoft в правом верхнем углу окна браузера. Во время загрузки страницы эта эмблема вращается. Если хотите, можете заменить эмблему Windows на свой собственный символ. Создайте два bmp-файла — 38*1520 и 24*960 пикселов. В каждом из них нарисуйте последовательность кадров размером 38*38 и 24*24 пикселов, как, скажем, на рисунке:


Также сделайте отдельные bmp-файлы с картинками размером в 38*38 и 24*24 пикселов. А затем пропишите пути к первым двум файлам в параметрах BrandBitmap и SmBrandBitmap раздела HKEY_CURRENT _USERSoftware MicrosoftInternet ExplorerToolbar, а ко вторым — в параметрах BigBitmap и SmallBitmap раздела HKEY _LOCAL_MACHINESOFTWARE MicrosoftInternet ExplorerMain. После перезагрузки браузера изображения из файлов с последовательностью кадров будут выводится в момент путешествия по Интернет, а из файлов с отдельными кадрами — при полностью загруженной web-странице.

2. В процессе работы системный реестр из-за особенностей действий с ним операционной системы обрастает лишними двоичными данными. Они не имеют никакого значения для программ, обращающихся к реестру, но занимают место. Для того, чтобы избавиться от них, загрузитесь в Режиме MS-DOS и из командной строки запустите команду regedit /e file.reg, а когда она закончит работу — команду regedit /с file.reg. При этом реестр будет экспортирован в текстовый файл, а потом загружен обратно. Все лишние двоичные данные исчезнут, а размер реестра станет меньше. Данный прием работает исключительно в среде Windows9x.

Заключение. Смело — вперед!

Вот и закончилась эта большая и сложная глава. Но несмотря на свои размеры, она охватила лишь очень малую часть секретов системного реестра Windows. Конечно, хотелось бы узнать поподробнее про другие разделы, выяснить наконец, где прячутся другие интересные настройки… Можно, конечно, поискать книги, полазить по Интернету. Но это все — дорого и сложно.

А ведь между тем у вас есть все инструменты для того, чтобы системный реестр открывал перед вами все новые свои тайны. Этот инструмент — ваши глаза и руки, ваш разум и память. Наблюдайте, исследуйте, делайте выводы, экспериментируйте (естественно, приняв все меры предосторожности!), — и тогда вы не на чьих-то словах, а на собственном опыте узнаете многие и откроете новые секреты этого недокументированного сердца Windows — системного реестра.

Оглавление книги


Генерация: 8.697. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз