--<< Возврат к содержанию >>-- Назад

Тайны системного реестра - 2
Антон Орлов

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

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

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


 Рис. 1. Окно Конфигурации используется крайне редко. Однако именно здесь записаны параметры текущей аппаратной конфигурации.

В настоящее время в связи с развитием новых технологий USB и др. устройств "горячего подключения" необходимость в различных аппаратных конфигурациях почти отпала, но их поддержка в Windows присутствует. (В каталоге Windows есть файл tips.txt, в нем приведен пример создания нескольких аппаратных конфигураций для ноутбука.) В ключе Config под своими номерами располагаются записи о всех созданных конфигурациях, а при загрузке компьютера или изменении конфигурации соответствующий раздел "отражается" в реестре под видом раздела HKEY_CURRENT_CONFIG. Если аппаратная конфигурация одна, то и в разделе Config есть только один подраздел, совпадающий с ключом HKEY_CURRENT_CONFIG. (Сами имена конфигураций, отображаемые в окне Система, хранятся в ключе HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\IDConfigDB вместе с номерами этих конфигураций.)

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

Подраздел Enum содержит информацию о распознанных операционной системой устройствах компьютера. В Windows есть несколько важных программных компонентов, отвечающих за обнаружение устройств и предоставление их для работы другим компонентам системы. Основными среди них являются два - диспетчер конфигурации и энумератор. При загрузке компьютера диспетчер конфигурации опрашивает BIOS и получает от него информацию о всех устройствах, не поддерживающих стандарт Plug&Play, а затем заносит ее в реестр, в этот самый раздел Enum. Затем в дело вступает программа-энумератор, которая считывает из реестра информацию о не-Plug&Play-устройствах, а затем опрашивает имеющиеся в компьютере Plug&Play-устройства и составляет список всех имеющихся, назначив каждому единственный идентификатор - HardwareID. Затем основная роль вновь переходит к диспетчеру конфигурации, который на основании информации энумератора о наличии устройств и их характеристике (Plug&Play или нет) распределяет между устройствами прерывания, адреса ввода-вывода и другие ресурсы системы. В этом ему помогают специальные подпрограммы "арбитры", которые изменяют выделяемые ресурсы так, чтобы не было, используемых одновременно двумя устройствами. Вначале распределяются ресурсы между не-Plug&Play-устройствами (информация о которых пришла еще из BIOS), а затем между Plug&Play, так как последние умеют работать с разными настройками распределения ресурсов без изменения своей аппаратной части, и переназначить им, например, прерывания можно программно. Все внесенные изменения фиксируются в разделе Enum, а также в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class, содержащем совокупность информации о распознанных устройствах, а также о загруженных для них драйверах, на подразделы с данными о которых в разделе Enum имеются ссылки.

Подраздел HKEY_LOCAL_MACHINE\Hardware, несмотря на громкое и многообещающее название, хранит в себе немного информации о последовательных портах и установленных на них модемах. Информация - на уровне перечисления имеющихся в компьютере портов и разъемов для модемов.

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

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


 Рис. 2. А вот и информация о системе и пользователе из окна Система — Общие. (Записи о поддержке и рисунок внизу этого окна указываются не в реестре, а в файлах oemlogo.ini и oemlogo.bmp из каталога Windows\System.)

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


 Рис. 3. Если вы укажете в этом разделе имя для запуска программы и путь к ней, то сможете не думать о задании правильного пути в окне «Выполнить».

Подраздел Explorer опять-таки посвящен программе "Проводник", но уже ее общим настройкам. В подразделах Desktop\NameSpace и Mycomputer\NameSpace находятся идентификаторы тех объектов, которые должны быть расположены на Рабочем столе и в папке "Мой компьютер", например, "Корзина" или "Удаленный доступ к сети". Вы можете удалить отсюда ненужные объекты или, наоборот, добавить сюда желаемые, создав вначале для них идентификаторы в разделе HKEY_CLASSES_ROOT, как описано на одной из врезок.

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


 Рис. 4. Вы никогда не задумывались, откуда компьютер знает, сколько дней назад вы последний раз дефрагментировали винчестер? А вот отсюда.

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


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

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


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

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


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

Из следующего подраздела реестра, MS-DOSOptions, берутся параметры для диалоговых окон при настройке ярлыков программ MS-DOS для особой конфигурации режима MS-DOS. Именно с помощью этих параметров можно удобно настроить файлы autoexec.bat и config.sys для каждого ярлыка программы, работающей в режиме MS-DOS (рис. 8).


 Рис. 8. Вот откуда берут свои параметры диалоговые окна настройки ярлыков «Режима MS-DOS».

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

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


 Рис. 9. Это список всех возможных настроек временных зон планеты. А берется он не из файла, а из реестра, поэтому не ищите его на жестком диске.

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


 Рис. 10. А вот и тот список, что вы наверняка в свое время долго искали, чтобы почистить…

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

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

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


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

Подраздел Nls посвящен кодовым страницам, которые поддерживаются системой. В его подразделе Codepage каждому номеру кодовой страницы (например, "1251" - кодировка Windows-1251) поставлен в соответствие файл, содержащий информацию об этой кодовой странице, а в подразделе Locale - имена этих кодовых страниц.

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

Подраздел SessionManager посвящен старым приложениям MS-DOS. В подразделе CheckBadApps содержится список программ MS-DOS, которые могут быть несовместимы с Windows. Наверное, вы пробовали из-под Windows запустить Norton Commander 5.0 и получали сообщение, что программа некорректно работает в этой операционной системе (рис. 12)?


 Рис. 12. Сообщение при попытке запуска Norton Commander 5.0 в среде Windows.

Для каждой программы MS-DOS, при попытке запуска которой выдается такое сообщение, есть свой подраздел с именем ее запускающего файла в подразделе CheckBadApps, а в нем - параметр с именем запускающего файла (рис. 13), в котором указано число. Это число - указатель на номер справочного раздела в файле Apps.hlp из папки Windows\Help, в котором рассказано, почему данная программа некорректно работает в Windows.


 Рис. 13. Для любой программы MS-DOS можно создать здесь раздел, и тогда при попытке ее запуска будет выводиться подобное предупреждение. (А вы, наверное, думали, что Windows изучает программу и делает вывод, будто она плохо будет работать? Ну прямо, как ее разработчики прописали в реестре, так она себя и ведет!)

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

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

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

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

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

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


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

Таким образом, этот подраздел фактически является "реестром в реестре", базой данных по устройствам, железу, установленным в компьютере. В него включена информация, поставляемая энумератором и диспетчером конфигурации и записанная в разделе HKEY_LOCAL_MACHINE\Enum, а также данные о загруженных драйверах устройств и их параметрах (к примеру, строка инициализации модема помещается в ключе Class\Modem\0000\Init). Вспомните, кстати, что в Enum'е были ссылки на драйверы устройств вида Driver = DiskDrive\0001. Так вот это были ссылки именно на подразделы данного раздела Class, в чем нетрудно убедиться.

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

Остальная часть раздела HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services содержит данные некоторых программ и особого интереса для пользователя не представляет.

Общий модуль

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


 Рис. 15. HKEY_CURRENT_USER целиком и полностью содержится в разделе HKEY_USERS. А почему тогда он еще и после HKEY_CLASSES_ROOT идет? А чтоб удобней было.

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

HKEY_CURRENT_CONFIG - это описание текущей конфигурации оборудования компьютера. Этот раздел является отражением одной из ветвей раздела HKEY_LOCAL_MACHINE\Config (рис. 16), в котором описаны все созданные в системе конфигурации оборудования. Сами они создаются с помощью диалогового окна Панель управления - Система - Конфигурации. Когда конфигурация меняется, меняется и содержимое раздела HKEY_CURRENT_CONFIG - он начинает "отражать" уже другую ветвь раздела HKEY_LOCAL_MACHINE\Config. Назначение отдельных разделов и параметров этого ключа практического интереса не представляет, так как редактировать эти данные лучше "законным" способом - с помощью диалоговых окон. Единственным следствием из всей этой информации может быть совет восстановить реестр из резервной копии, если в результате ваших экспериментов с созданием конфигураций компьютер стал неработоспособным.


 Рис. 16. Очередное повторение в реестре? Да нет, не повторение, а текущая аппаратная конфигурация. Какая нужна, такая сюда и загружается. Хотя у 99,99% пользователей она всегда одна.

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

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

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

В разделе HKEY_DYN_DATA находятся два подраздела. Первый из них, HKEY_DYN_DATA\Config Manager\Enum посвящен состоянию железа компьютера. Если в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class расположена информация о том, какие устройства установлены в компьютере, то в этом разделе - данные о том, как они работают: исправно или нет. Информация в окне Панель управления - Система - Устройства формируется из содержимого обоих разделов.

Второй же раздел, PerfStats - это раздел статистики. Он связан (но не является отражением, как, скажем, HKEY_CLASSES_ROOT) с разделом HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\PerfStats (рис. 17) и содержит статистическую информацию по его параметрам. Можно сказать, что в HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\PerfStats перечислены параметры статистики системы, а в HKEY_DYN_DATA\PerfStats - их значения. Именно отсюда берет свои данные программа "Системный монитор".


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

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

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

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

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


 Рис. 18. Фрагмент реестра, экспортированный в текстовый файл. Обратите внимание на структуру этого файла!

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

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

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

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

Смело вперед!

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

Удачи!

--<< Возврат к содержанию >>-- Назад

Сайт создан в системе uCoz