Здесь хранится все. Реестр системы Windows XP

Здесь хранится все. Реестр системы Windows XP

Автор: Сергей Голубев

Источник: Upgrade

Системный реестр ОС 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 организован куда логичнее: практически каждый куст является файлом, его можно перемещать и редактировать. Кусты реестра, к которым система обращается наиболее часто, расположены следующим образом:

куст HKEY_LOCAL_MACHINE

System — файл Windowssystem32configsystem;

куст HKEY_LOCAL_MACHINESAM — файл Windowssystem32configsam;

куст HKEY_LOCAL_MACHINESecurity — файл Windowssystem32configsecurity;

куст HKEY_LOCAL_MACHINESoftware — файл Windowssystem32configsoftware;

куст HKEY_CURRENT_USER — файл <профиль пользователя> tuser.dat;

куст HKEY_CURRENT_CONFIG — файл Windowssystem32configsystem;

куст HKEY_USERS.DEFAULT — файл Windowssystem32configdefault.

Помимо основных файлов, к реестру относятся вспомогательные, имеющие расширения LOG, ALT и SAV. LOG-файл содержит список изменений, которые были сделаны пользователем в определенном кусте за последний сеанс работы. ALT-файл — это резервная копия куста HKEY_LOCAL_MACHINESystem, используемая системой Windows для восстановления работоспособной конфигурации. Наконец, в SAV-файлах хранится содержание кустов на момент запуска ОС (только ntuser.dat не имеет такого файла). Они нужны системе для того, чтобы после сбоя восстанавливать удачные параметры.

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

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

Раздел HKEY_CLASSED_ROOT является пользовательским. Может быть, именно поэтому с ним всегда довольно сложно работать. Здесь содержатся данные о модели многокомпонентных объектов (Component Object Model, или COM), а она лежит в основе технологии ActiveX. Под компонентом в данном контексте я подразумеваю все что угодно, от простейшего текстового файла до низкоуровневого объекта. Именно тут находятся записи о типах файлов и ассоциированных с ними приложениях.

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

Раздел HKEY_CURRENT_USER посвящен настройкам программного обеспечения, соответствующим текущей учетной записи. Именно здесь находится информация, определяющая параметры работы меню «Пуск», конфигурацию "Рабочего стола" и цветовые схемы интерфейса. Данные часто обновляются, и вот по какой схеме: из пользовательского раздела HKEY_USERS в HKEY_CURRENT_USER копируются записи, меняющиеся в процессе работы, причем окончательный вариант сохраняется в HKEY_USERS по завершении сеанса.

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

Раздел HKEY_CURRENT_USER состоит из подразделов. Некоторые из них используются достаточно часто, остальные — от случая к случаю. Подраздел AppEvents включает в себя перечень возможных событий, относящихся к приложениям. В частности, там описываются звуковые эффекты. За командные запросы отвечает подраздел Console. Его содержимое модифицируется напрямую, графических утилит для его конфигурирования нет. Хотя и редактировать там особо нечего, вряд ли стоит морочить себе голову размером курсора или видом нестандартного шрифта.

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

Абонентам локальных сетей понадобятся подразделы Network и Printers. В них находятся перечни всех сетевых дисков и принтеров. А списки используемых данным юзером сетевых соединений хранятся в подразделе RemoteAccess. Наконец, подраздел Software. Как нетрудно догадаться, именно тут располагается список всех программ, применяемых в системе, а также их настроек. Software разбит на множество подраздельчиков — по одному на каждого поставщика используемого ПО.

Коль скоро мы упомянули о разделе HKEY_USERS, разберемся с ним. В нем перечислены пользователи, имеющие доступ к реестру. Очевидно, что корректировать большую часть находящейся там информации бесполезно, она все равно обновляется из HKEY_CURRENT_USER. Так что используется данный раздел только для изменения учетных записей неактивных пользователей.

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

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

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

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

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

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

Подраздел Software состоит из двух частей: Fonts и Microsoft. Если назначение первой ясно из ее названия, то во второй хранятся так называемые Internet Settings, параметры функции автоматического набора телефонного номера и описание способов использования локальных устройств для выхода в интернет.

В подразделе System находятся параметры принтера, звуковых и видеоустройств. Именно этот подраздел содержит параметры работы API Microsoft DirectSound. В нем же настройки источника бесперебойного питания. И, разумеется, в System хранятся сведения о разрешениях видеокарты.

Как с ним работать

Штатное средство системы Windows для работы с реестром так и называется — "Редактор реестра". Запустить его можно командой regedit. Естественно, в меню «Пуск» эта программа отсутствует: в Microsoft считают, что большинству пользователей нет никакой надобности редактировать реестр вручную. Если вы придерживаетесь иного мнения, а каждый раз вызывать "Редактор реестра" через «Пуск» > «Выполнить» вам лень, то меню следует подредактировать. Для этого кликаем по «Пуску» правой кнопкой и в появившемся списке выбираем «Проводник». Нас интересует папка Documents and Settings<Пользователь>Главное менюПрограммы. Для того чтобы добавить в нее кнопку запуска "Редактора реестра", кликаем правой кнопкой мыши по пустому месту в правом фрейме, выбираем "Создать ярлык" и находим программу regedit.exe в каталоге Windows. После добавления нажимаем на «Пуск», вот и все.

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

Тип REG_SZ (String) представляет собой обычную строку текста, то есть последовательность символов. Эта строка всегда должна заканчиваться нулевым символом. Тип REG_BYNARY (Bynary) — необработанные двоичные данные. В этом формате хранятся почти все сведения об аппаратных компонентах системы, причем "Редактор реестра" данную информацию выводит на экран в шестнадцатеричном формате. Тип REG_DWORD (DWord) — это данные, являющиеся целым числом в диапазоне от 0 до 4 294 967 295. "Редактор реестра" может отображать их в двоичном, десятичном или шестнадцатеричном формате. Такой вид обычно имеют параметры служб и драйверов. Тип REG_MULTI_SZ (Multi-String) — многострочный текст. Понятно, что информацию в таком формате юзеру воспринимать легче. Символом, обозначающим конец строки в REG_

MULTI_SZ, является «0» (ноль).

Переменные, обрабатываемые любой программой или службой, принадлежат к типу REG_EXPAND_SZ (Expandable String). Этот тип определяет строку переменной длины. Необходимость в таких данных объясняется тем, что пользователь имеет определенную свободу формирования файловой системы и т. д. В частности, переменная %ProgramFiles% задает расположение соответствующего каталога, а его полное имя может быть, в принципе, каким угодно. Наконец, уникальный тип REG_FULL_RESOURCE_DESCRIPTION представляет собой последовательность вложенных массивов и используется для хранения полного списка ресурсов всех драйверов.

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

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

Второй случай удобнее всего проиллюстрировать на примере файлового менеджера FAR. Конечно, хорошо, когда сторонние разработчики прислушиваются к советам Microsoft и используют реестр. Если же вы хотите сохранить все настройки после переустановки системы, то вам надо принять все необходимые для этого меры. Для этого открываем "Редактор реестра" и находим ветку HKEY_CURRENT_USERSoftwareFar, в ней хранится все, что имеет отношение к данному приложению. Мы можем сохранить ее целиком или только какую-то ее часть. Кстати, интересующий нас список FTP-серверов находится тут: HKEY_CURRENT_USERSoftwareFarPluginsFTPHosts.

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

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

Предусмотрительностью. Один постоянно твердит: "Знать бы, где упадешь!" — а другой молча подстилает соломку. А падают и тот, и другой одинаково часто.

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

Напоследок немного о безопасности. Если вашей машиной пользуется еще ряд лиц, то непременно возникнет вопрос о разграничении прав доступа к файлам реестра. Чтобы решить данную проблему, зайдите в раздел «Правка» > «Разрешения» (в "Редакторе реестра"). По умолчанию установлены параметры безопасности, оптимальные в общем случае. Но где вы на практике встречали этот самый "общий случай"? Где угодно, только не на своей машине.

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

Registry Toolkit

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

Вторая функция этого пакета, имеющая отношение к реестру, позволяет делать резервные копии и восстанавливать из них реестр. Необходимость этой функции рассмотрена в статье, так что не стану повторяться. Проживает эта программа по адресу antispy4you.com/index.php?adv=padrdefrag, откуда ее и можно скачать. Кстати, она русифицирована. Однако бесплатно пользоваться пакетом можно только три недели. Потом придется разориться на $11,95.

Программа jv16 PowerTools 2005

Эта программа для работы с реестром, проживающая по адресу www.macecraft.com/jv16powertools2005, была одной из самых популярных в России. Ее широкому распространению на постсоветском пространстве очень способствовала ее цена: с нас, бедных и сирых, разработчики денег не брали. Но отдельные сограждане, вместо того чтобы всячески поддерживать свою репутацию, бросились покупать футбольные клубы. И вот результат: теперь jv16 PowerTools стоит $29,95. Для всех без исключения. Прошу понять меня правильно. Мне денег не жалко, за державу обидно.

А программа действительно хороша. Особенно тем, что предлагает пользователю массу полезных возможностей, таких как чистка реестра, обычный поиск или поиск с автоматической заменой. Освоить jv16 PowerTools 2005 по силам даже юзеру, имеющему отдаленное представление о внутреннем устройстве реестра. Скажем, для редактирования пунктов контекстного меню "Открыть с помощью…" не надо залезать в реестр: программа сама определит зарегистрированные приложения, выведет на экран их полный список, из которого пользователь сможет исключить заведомо неактуальные программы.

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

RegWorks

RegWorks — это самый настоящий альтернативный редактор. Честно говоря, когда возникает необходимость поработать с реестром, лично я запускаю не regedit.exe, а данную программу. Главным образом потому, что по интерфейсу эти утилиты похожи. То есть автор RegWorks Евгений Лоскутов (я всегда говорил, что наши программисты лучшие в мире) решил не морочить голову знакомым с Regedit пользователям: никакого времени на освоение тех возможностей программы, которые поддерживает стандартный инструмент, не требуется. Поэтому проблемы перехода со штатного редактора на альтернативный попросту не возникает.

Две фирменные фишки RegWorks — монитор реестра и справочная система. Монитор позволяет практически в реальном времени (раз в 400 миллисекунд) фиксировать все изменения, происходящие в реестре. Это очень полезно не только когда вы устанавливаете новые программы, но и когда хотите постоянно проводить диагностику системы на предмет вирусного заражения (согласитесь, лишний контроль никогда не помешает). Гибкая система фильтров позволяет не только видеть весь реестр как на ладони, но и отлавливать конкретные изменения.

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

Программа полностью русифицирована и распространяется бесплатно. Хотя в последнем я не совсем уверен. Дело в том, что англоязычный сайт http://www.regwrks.com/ ссылается на http://www.regwrks.ru/. Тот же самый адрес указан и в разделе "О программе", вызываемом с панели управления софтины. Но русский сайт почему-то недоступен. На английском же сказано, что программа стоит 30 американских долларов. Хотя на русских софтовых порталах она проходит как freeware. Как бы то ни было, я пользуюсь RegWorks достаточно давно, и никаких денег она не просит. Найти программу в Сети довольно просто.

Скачать ее можно хотя бы отсюда: www.listsoft.ru/programs/16684/?fileid=2.