Системный реестр ОС Windows XP - это объект, в котором регистрируются большие объемы самой разной информации. Впервые он появился в Windows NT. Прообразом реестра можно считать инициализационные файлы (INI-файлы). Именно в них разработчики ПО начали хранить разного рода данные, определяющие конфигурацию утилит. Кстати говоря, многие до сих пор не отказались от старых методов: видимо, не хотят связываться с реестром.
Таким образом, разработчики к этому нововведению Microsoft относятся неоднозначно. Кое-кто даже называет реестр "черным ящиком". Разумеется, доводов в пользу реестра ничуть не меньше. Вот главный из них: он удобен для пользователя. Хотя и не всегда.
Проиллюстрировать это проще всего примером с настройками популярного файлового менеджера FAR. Как известно, он умеет запоминать адреса FTP-серверов, чтобы пользователю не приходилось вводить их каждый раз вручную. Адреса эти сохраняются в реестре. Таким образом, юзеру не составит никакого труда найти эти ссылки и при необходимости подредактировать их параметры вручную.
И не надо рыскать по всем каталогам в поисках настроек. То есть это несомненный плюс, ибо отдельный файл конфигурации может находиться где угодно (а у современных разработчиков фантазия богатая, так что разведмероприятия часто занимают уйму времени). Однако, положим, вы забыли сделать копию нужной ветви реестра, и тогда после форматирования раздела и повторной установки системы ссылки вам придется восстанавливать все нужные параметры по памяти. Этого можно было бы избежать, если бы настройки программы хранились в отдельном файле, расположенном где угодно, хоть на другом разделе диска (и при переустановке системы они спокойно остались бы там, где были).
Безусловно, сама компания Microsoft рекомендует сторонним разработчикам хранить всю информацию об их программах в реестре. Благо в Windows XP никаких ограничений на его размер не предусмотрено. Поэтому, кстати, в реестре накапливается очень много мусора, который необходимо время от времени выбрасывать.
Тут мы приходим к удивительному выводу: как ни делай, все равно будет не так. Никто в этом не виноват, ни Билл Гейтс, ни Стив Баллмер. Просто они люди. Такие же, как и мы с вами. Мельчайшая амеба выглядит так, что поражает наше воображение сильнее, чем самая причудливая авангардная картина, и устроена куда более рационально, чем самая лучшая программа. Но тот, кто сотворил амеб, не занимается написанием софта. Поэтому будем изучать то, что есть, или ждать, когда обломится грант, на который можно будет жить припеваючи, созерцая в микроскоп нечто более интересное, чем какой-то реестр какой-то операционной системы.
Как он устроен
Системный реестр представляет собой иерархическую базу данных, в которой хранятся всевозможные сведения о компонентах операционной системы и прикладных программах. Главная его особенность заключается в том, что содержащиеся в нем данные могут иметь различный формат. В текстовом файле, например, все это держать не получится.
Концепция, заложенная в основу построения реестра, имеет необычное название: "принцип селекции реестра при помощи кустов". Это означает, что каждая область памяти предназначена для хранения определенного типа данных. При этом различные юзеры не могут использовать данные друг друга, если только они сами не заявили о готовности "жить колхозом". Вместо термина "куст" довольно часто употребляют аббревиатуру HKEY (handle to a key). Это неправильно, поскольку куст - отдельный компонент файла или область памяти.
А HKEY, как следует из ее расшифровки, - дескриптор раздела, указывающий на инструмент, при помощи которого предоставляется доступ к данному уровню реестра. Если же слово "куст" вызывает у вас неприятные ассоциации, то можете вместо него использовать термин "улей" (hive), распространенный в англоязычной документации. Куст состоит из разделов, подчиненных разделов и параметров, а также имеет корни на верхнем уровне иерархии реестра.
В системе Windows 98 реестр хранился в двух файлах (SYSTEM.DAT и USER.DAT), а вот Windows XP устроена намного сложнее. В ней уже не сделаешь резервные копии реестра, сохранив всего два вышеупомянутых файла. Впрочем, реестр в Windows XP организован куда логичнее: практически каждый куст является файлом, его можно перемещать и редактировать. Кусты реестра, к которым система обращается наиболее часто, расположены следующим образом:
Помимо основных файлов, к реестру относятся вспомогательные, имеющие расширения LOG, ALT и SAV. LOG-файл содержит список изменений, которые были сделаны пользователем в определенном кусте за последний сеанс работы. ALT-файл - это резервная копия куста HKEY_LOCAL_MACHINE\System, используемая системой Windows для восстановления работоспособной конфигурации. Наконец, в SAV-файлах хранится содержание кустов на момент запуска ОС (только ntuser.dat не имеет такого файла). Они нужны системе для того, чтобы после сбоя восстанавливать удачные параметры.
Реестр является одной из главных составных частей Windows XP. В нем содержатся не только параметры программных и аппаратных компонентов системы, но и сведения о ней. Иными словами, при помощи реестра можно отредактировать практически все. Поэтому структура его достаточно сложна. Если бы он не состоял из разделов, а представлял собой единый информационный массив, то реально пользоваться им умели бы лишь настоящие гуру. Кстати, кусты и разделы - это вовсе не одно и то же. Кусты - это файловые составляющие раздела, которые при загрузке системы собираются в единую древовидную структуру.
К нашему счастью, Microsoft всегда думает о простых пользователях. И это вовсе не ирония: если у компании не все получается так, как нам хотелось бы, то виной тому обстоятельства, о которых я рассказал в начале статьи
Раздел HKEY_CLASSED_ROOT является пользовательским. Может быть, именно поэтому с ним всегда довольно сложно работать. Здесь содержатся данные о модели многокомпонентных объектов (Component Object Model, или COM), а она лежит в основе технологии ActiveX. Под компонентом в данном контексте я подразумеваю все что угодно, от простейшего текстового файла до низкоуровневого объекта. Именно тут находятся записи о типах файлов и ассоциированных с ними приложениях.