Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Секреты Windows: статьи о реестре, rundll32.exe, программах Windows Vista: Хранение реестра и доступ к нему


Другие наши рассылки:
  • Новости IT-мира: Ежедневно ссылки на новые новости и статьи популярных компьютерных сайтов.
  • Рецензии на новые книги: Описание новых книг о компьютерах, дизайне, бухгалтерии, психологии и др. направлениях мысли человечества.
  • Новости нашего сайта: Ежедневно ссылки на новые материалы, поступающие на наш сайт: от ссылок на статьи до ссылок на новые и обновленные записи онлайновых баз данных.

Данная статья была написана для журнала Мой компьютер.

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

Файлы кустов

На уровне файловой системы реестр всех операционных систем семейства Windows реализован в виде нескольких файлов. Причем количество и названия файлов отличаются для семейств Windows 9x и Windows NT. Поскольку семейство операционных систем Windows 9x морально и физически устарело, мы с вами будем говорить только о реестре семейства Windows NT — именно к этому семейству операционных систем относится Windows Vista.

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

Размер файлов кустов кратен 4 Кбайт, так как файлы кустов состоят из блоков, размер которых равен 4 Кбайт.

Файл кустов не имеет никакого расширения, и большинство из них хранятся в каталоге %systemroot%\System32\config. Кроме того, в данном каталоге хранятся файлы, имеющие те же названия, что и файлы кустов, но при этом имеющие различные расширения. Например, следующие.

Название куста.LOG Содержит описание изменений, которые произошли в реестре операционной системы, но еще не были помещены в файлы куста. Файлы с расширением .log, называют регистрационными кустами.

Данные регистрационного куста сохраняются в файле куста с интервалом не менее 5 секунд.

Минимальный интервал сохранения данных регистрационного куста в файле куста можно изменить при помощи параметра DWORD-типа RegistryLazyFlushInterval, расположенного в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager.

Название куста.SAV Содержит файл куста, который использовался при установке операционной системы.

Название куста_previous Содержит более новую резервную копию файла куста, чем файл «Название куста.SAV».

Также в каталоге %systemroot%\System32\config присутствует еще несколько файлов: adapterinfo.txt, envinfo.txt, osinfo.txt. Первые два из них содержат описания сетевых карт, а последний — описание операционной системы пользователя.

Помимо файлов в каталоге %systemroot%\System32\config можно встретить подкаталог RegBack. В нем также находятся резервные копии основных файлов кустов.

Список всех ульев, которые были загружены в оперативную память при запуске операционной системы, хранится в реестре. Чтобы взглянуть на него, достаточно перейти к ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\hivelist (рисунок. 1). Названия параметров данной ветви определяют ветвь реестра, в которую был загружен соответствующий куст. Значения же параметров определяют путь к файлу кустов и его имя.

Рисунок 1

Давайте вкратце рассмотрим назначение файлов кустов операционной системы Windows Vista.

Куст BCD

Куст расположен в каталоге «буква системного диска»:\Boot\BCD и содержит в себе ветвь реестра HKLM\BCD00000000. Данная ветвь реестра хранит в себе описание загрузочного меню, отображаемого при запуске компьютера.

Также, поскольку данная ветвь является важным элементом операционной системы Windows Vista, в каталоге %systemroot%\System32\config существует шаблон данной ветви реестра, который называется BCD-Template.

Куст COMPONENTS

Данный куст расположен в каталоге %systemroot%\System32\config. Он содержит в себе ветвь реестра HKLM\COMPONENTS. Содержимое данной ветви реестра представляет собой список всех компонентов, из которых состоит ваша операционная система Windows Vista, и которые можно будет установить (или они уже установлены).

Куст HARDWARE

Данный куст определяет содержимое ветви HKLM\HARDWARE, которая хранит в себе описание оборудования компьютера. Фактически данного куста больше не существует, однако ссылка на него осталась в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\hivelist.

Несмотря на то, что куста HARDWARE как такого не существует, вы сможете найти в реестре ветвь HKLM\HARDWARE — содержимое данной ветви строится при загрузке компьютера и на протяжении сеанса работы операционной системы хранится в оперативной памяти.

Куст SAM

Данный куст расположен в каталоге %systemroot%\System32\config. Он хранит в себе ветвь реестра HKLM\SAM. Содержимое данной ветви реестра представляет собой базу данных SAM (Security Access Manager), хранящую в себе пароли учетных записей пользователей, групп, их права доступа и другую конфиденциальную информацию.

По умолчанию содержимое данной ветви реестра разрешено просматривать только учетной записи локальной системы (System). Однако если вы являетесь администратором компьютера, вы можете изменить права на просмотр данной ветви реестра.

Куст SECURITY

Данный куст расположен в каталоге %systemroot%\System32\config. Он хранит в себе ветвь реестра HKLM\SECURITY. Содержимое данной ветви реестра представляет собой еще одну часть базы менеджера безопасности SAM.

По умолчанию содержимое данной ветви реестра также разрешено просматривать только учетной записи локальной системы (System). Однако администратор может изменить права на просмотр данной ветви реестра.

Куст SOFTWARE

Данный куст расположен в каталоге %systemroot%\System32\config. Он хранит в себе ветвь реестра HKLM\SOFTWARE. Содержимое данной ветви реестра представляет собой информацию о глобальных настройках программного обеспечения, установленного на компьютере, а также настройки интерфейса и компонентов операционной системы, которые распространяются на всех пользователей. Также в данной ветви реестра содержится информация о зарегистрированных в операционной системе расширениях файлов и ActiveX-объектах.

Куст SYSTEM

Данный куст расположен в каталоге %systemroot%\System32\config. Он хранит в себе ветвь реестра HKLM\System. Содержимое данной ветви реестра определяет настройки аппаратных профилей компьютера, служб и драйверов, зарегистрированных в операционной системе, а также важную конфигурацию работы самой операционной системы.

Куст DEFAULT

Данный куст хранится в каталоге %systemroot%\System32\config и содержит в себе ветвь реестра HKEY_USERS\.DEFAULT. Содержимое данной ветви реестра определяет настройки, используемые при создании нового профиля пользователя, впервые зарегистрировавшегося в системе. Также данная ветвь реестра содержит информацию, которая используется операционной системой до входа какого-либо пользователя.

Куст NTUSER.DAT

Данный куст хранится в профиле пользователей. Он содержит всю информацию о настройках конкретного пользователя, установленном программном обеспечении, а также о настройках интерфейса пользователя. Данный куст определяет содержимое ветви реестра HKEY_USERS\«SID учетной записи пользователя». Кроме того, корневой раздел реестра HKEY_CURRENT_USER является ссылкой на куст текущего пользователя, работающего в операционной системе.

Если внимательно посмотреть содержимое ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\hivelist, можно заметить, что в реестр загружается сразу несколько файлов NTUSER.DAT. Количество загружаемых в реестр файлов NTUSER.DAT определяется количеством профилей, которые были загружены операционной системой (с точки зрения реестра, NTUSER.DAT как раз и является профилем пользователя).

Например, по умолчанию загружаются следующие профили.

  • Профиль пользователя. Для него загружается файл NTUSER.DAT каталога %userprofile%.
  • Профиль учетной записи локальной службы. Для него загружается файл NTUSER.DAT каталога %systemroot%\ServiceProfiles\LocalService. Данная учетная запись используется при работе многих служб операционной системы.
  • Профиль учетной записи сетевой службы. Для него загружается файл NTUSER.DAT каталога %systemroot%\ServiceProfiles\NetworkService. Данная учетная запись используется при работе многих служб операционной системы.

Также в реестр могут загружаться профили других пользователей, если какие-либо службы работают от имени этих пользователей. Кроме того, в реестр может загружаться профиль определенного пользователя, если вы запускаете программу от его имени. Например, при помощи программы командной строки runas.exe.

В каталоге профиля пользователя кроме файлов NTUSER.DAT и NTUSER.DAT.LOG можно встретить файлы ntuser.pol и ntuser.ini. Эти файлы определяют настройки групповой политики, применяемые для данного пользователя.

Куст UsrClass.dat

Данный куст определяет класс, к которому относится учетная запись пользователя, и хранится в каталоге %userprofile%\AppData\Local\Microsoft\Windows. Он содержит в себе ветвь реестра HKEY_USERS\«SID учетной записи пользователя»_Classes.

Работа с реестром. Программа regedit.exe

Несмотря на то, что файлы кустов реестра являются текстовыми файлами, работать с ними напрямую из какого-нибудь текстового редактора нельзя. Специально для работы с реестром в стандартную поставку операционной системы Windows Vista входит программа regedit.exe. Данная программа объединяет в одно общее пространство все файлы кустов и предоставляет вам простой способ доступа к реестру и его модификации.

Основное окно программы (рисунок 2) чем-то напоминает проводник операционной системы Windows. Оно стоит из двух основных панелей — левой и правой.

Рисунок 2

Левая панель В левой панели отображаются подразделы реестра, и их расположение относительно корневого раздела.

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

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

Правая панель А в правой панели отображаются параметры, которые расположены в выделенном в данный момент подразделе. Правая панель содержит в себе три столбика: Имя (имя параметра), Тип (тип параметра) и Значение. Обратите внимание на параметр (По умолчанию) — данный параметр присутствует во всех разделах реестра и имеет тип REG_SZ (хотя вы можете изменить тип параметра по умолчанию определенного раздела при помощи сценариев операционной системы). Удалить параметр (По умолчанию) нельзя — можно удалить только его значение.

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

Создание параметров и разделов реестра

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

Самым простым способом создания элемента является отображение контекстного меню правой панели редактора реестра (рисунок 3). Также создать элемент реестра можно при помощи такого же подменю команды Создать контекстного меню выделенного в данный момент раздела.

Рисунок 3

Как видно из рисунка, с помощью редактора реестра regedit.exe можно создавать следующие элементы реестра.

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

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

Например, если вы создаете параметр строкового или расширенного строкового типа, тогда при изменении его значения перед вами отобразится простой диалог ввода строки (на рисунке 4 он находится на переднем плане).

Если же вы создаете параметр типа REG_MULTI_SZ, тогда перед вами отобразится другой диалог, в котором можно вводить несколько строк текста (на рисунке 4 он находится на заднем плане).

Рисунок 4

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

Для параметров типа REG_DWORD и REG_QWORD это диалог, представленный на рисунке 5 на переднем плане. Данный диалог позволяет вводить значение параметра как в шестнадцатеричной системе счисления, так и в двоичной.

А если вы создаете параметр типа REG_BINARY, тогда перед вами отобразится диалог, представленный на рисунке 5 на заднем плане (вы можете отобразить данный диалог и для редактирования параметров типа REG_DWORD или REG_QWORD, для этого нужно в контекстном меню параметра выбрать команду Изменить двоичные данные…). Данный диалог позволяет вводить значения только в шестнадцатеричной системе счисления.

Рисунок 5

Специально для просмотра значения параметров как двоичного (REG_BINARY, REG_DWORD и REG_QWORD), так и строкового типа, можно применять еще один диалог редактора реестра — диалог Двоичные данные. Этот диалог отображается после выделения необходимого параметра реестра и выбора команды Вывод двоичных данных… из меню Вид.

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

В левом диалоге параметр REG_DWORD типа отображается в том же формате, что и любые параметры типа REG_BINARY. А в правом диалоге параметр REG_DWORD типа отображается в своем родном формате.

Как можно заметить из рисунка 6, параметры типов REG_DWORD и REG_BINARY действительно в памяти хранятся в разных форматах — один из них хранит первый бит своего значения в первой ячейке памяти, а второй хранит последний бит своих данных в первой ячейке памяти.

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

Рисунок 6

Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=124

В избранное