Из чего состоит реестр. Что такое системный реестр Windows? Осторожность при применении

  • 29.03.2019

ТЕМА: СИСТЕМНЫЙ РЕЕСТР

1.Назначение системного реестра

Системный реестр - база данных, которая сохраняет параметры настройки для 32 разрядных версий Microsoft Windows включая; Windows 95, 98 и NT. Он содержит информацию и параметры настройки для всех аппаратных средств, программ, пользователей, и свойств PC. Каждый раз, когда пользователь делает изменения в параметрах настройки Панели управления, или в ассоциациях файлов, системной настройке, или в установленном программном обеспечении, изменения отражаются и сохраняются в системном реестре.

Физические файлы, которые составляют системный реестр, различаются в зависимости от версии Windows:

Windows 95 и 98 системный реестр содержится в двух скрытых файлах каталога Windows, называемыми USER.DAT и SYSTEM.DAT;

Windows NT файлы системного реестра содержатся в каталоге "Windows/System32/Config".

Редактор системного реестра (REGEDIT.EXE) включен в большинство версий Windows (хотя Вы не найдете его в меню "Пуск") он дает возможность просматривать, искать и редактировать данные в пределах системного реестра. Имеется несколько методов для запуска редактора, самый простой - нажать на кнопку "Пуск", затем выбрать Выполнить, дальше в поле "Открыть:" напечатать "regedit" и откроется редактор системного реестра.



Как только Regedit открыт, Вы заметите, что левую сторону занимает дерево с папками, а правую содержание выбранной папки. Чтобы развернуть некоторую ветвь, нажмите на знак "плюс" [+] слева от любой папки, или дважды щелкните на папке. Для отображения содержание папки, нажмите на нужный ключ, и Вы увидите параметры, перечисленные на правой стороне. Вы можете добавить новый ключ или параметр, выбирая пункт «Создать», из меню «Правка», или щелкая правой кнопкой мыши. Так же Вы можете переименовать любой параметр и почти любой ключ тем же методом, что и переименовываете файлы; щелкните правой кнопкой мыши на объекте, и выберете «Переименовать», или нажмите на нем дважды (медленно), или нажмите F2 на клавиатуре. Наконец, Вы можете удалить ключ или параметр, выбирая его, и, нажимая «Delete» на клавиатуре, или щелкая правой кнопкой мыши на параметре, и выбирая «Удалить».

Обратите внимание: Всегда резервируйте Ваш системный реестр перед созданием любых изменений в нем. Это даст Вам возможность не переустанавливать операционную систему в случае неправильных действий. Гораздо лучше перестраховаться, чем потом жалеть!

2.Структура системного реестра

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

· HKEY_CLASSES_ROOT: Эта ветвь содержит все типы Ваших ассоциаций к файлам, информацию об OLE и данные по ярлыкам.

· HKEY_CURRENT_USER: Эта ветвь связана с ветвью HKEY_USERS, и соответствует пользователю, работающему в настоящее время на PC.

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

· HKEY_USERS: Эта ветвь содержит индивидуальные настройки каждого пользователя компьютера, каждый пользователь представлен под ключом SID, расположенном под главной ветвью.

· HKEY_CURRENT_CONFIG: Эта ветвь связана с ветвью HKEY_LOCAL_MACHINE, и соответствует текущей аппаратной конфигурации.

· HKEY_DYN_DATA: Эта ветвь связана с частью HKEY_LOCAL_MACHINE, и служит для использования особенностей Plug-&-Play в Windows, этот раздел динамически изменятся, когда устройства добавляются и удаляются из системы.

3.Импорт и Экспорт параметров настройки системного реестра

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

REGEDIT4

"SetupType"=dword:00000000

"CmdLine"="setup -newsetup"

"SystemPrefix"=hex:c5,0b,00,00,00,40,36,02

REGEDIT4 указывает тип файла;

Указывает ключ, где находятся параметры;

"SetupType" =dword:00000000 это параметр, часть записи указанная непосредственно после "=" определяется в зависимости от типа данных; Строковое, Двоичное, или DWORD.

Отредактировав этот файл, Вы можете легко произвести изменения в системном реестре, для этого дважды щелкните на нем, или выберете "Импорт файла реестр…" из меню "Реестр", и параметры будут добавлены в системный реестр.

4.Восстановление системного реестра

Windows 95, 98. В каталоге Windows имеются несколько скрытых файлов, четыре из них - это SYSTEM.DAT и USER.DAT представляют Ваш текущий системный реестр, а SYSTEM.DA0 и USER.DA0 представляют копию Вашего системного реестра. Windows 9x имеет хорошее свойство: каждый раз, когда Windows успешно загружается, он копирует системный реестр в эти резервные файлы.

Кроме этого в состав Windows 98 входит утилита Scanregw. При помощи этой утилиты можно проверить реестр на ошибки и сделать резервную копию в любой момент вашей работы. Кстати, данная утилита может работать и с Windows 95. Когда что-то идет не так, как надо, реестр может быть восстановлен в предыдущее хорошее состояние. Для восстановления системного реестра выполните следующие команды:

1. Нажмите кнопку "Пуск", и затем нажмите "Завершение работы".

2. Выберете "Перезагрузить компьютер в режиме МS- DOS", затем нажимает ОК.

3. Перейдите в Ваш каталог Windows. Например, если Ваш каталог Windows - C:\Windows, то Вы должны напечатать следующее:

cd C:\Windows

4. Напечатайте следующие команды, нажимая ENTER после каждой из них. (Обратите внимание, что имена SYSTEM.DA0 и USER.DA0 содержат цифру ноль.)

attrib -h -r -s system.dat

attrib -h -r -s system.da0

copy system.da0 system.dat

attrib -h -r -s user.dat

attrib -h -r -s user.da0

copy user.da0 user.dat

5. Перезагрузите Ваш компьютер.

После этой процедуры Ваш системный реестр восстановит то состояние, при котором Вы в последний раз, успешно загрузили компьютер. Если все это не дало результатов, то на Вашем жестком диске имеется файл по имени SYSTEM.1ST, который был создан, при успешной установке Windows 95, 98. В случае необходимости Вы можете снять атрибуты этого файла: только для чтения и скрытый, чтобы скопировать в C:\WINDOWS\SYSTEM.DAT.

Примечание: для того, чтобы в один прекрасный день не оказаться у "разбитого корыта"- настоятельно рекомендуется иметь резервные копии реестра. Причём та копия, что делает Windows - не в счёт. Запросто может возникнуть ситуация, когда у вас окажется разрушенной и основная и дублирующая копии реестра. В этом случае вышеприведённые советы вам вряд ли помогут.

5.Восстановления системы

Microsoft включила в состав CD-ROM Windows 95 утилиту, которая позволит Вам создать копии системного реестра на компьютере. Программа Microsoft Configuration Backup, CFGBACK.EXE, может быть найдена в каталоге \Other\Misc\Cfgback на CD-ROM Windows 95. Эта утилита позволит Вам создать до девяти различных резервных копий Системного реестра в файлах с расширением.RBK, в Вашем каталоге Windows. Если система сконфигурирована для нескольких пользователей, CFGBACK.EXE не будет резервировать файл USER.DAT.

После того, как Вы сохранили Системный реестр, можно для большей сохранности скопировать RBK-файл на гибкий диск. Однако чтобы восстановить его копию, RBK-файл должен находится в каталоге \Windows. Windows 95 сохраняет копии в сжатой форме, которую Вы можете восстановить только тогда, когда используете утилиту CFGBACK.EXE.

Ну и несомненно лучшим выбором от Microsoft является утилита ERU (Emergency Recovery Utility). Утилита позволяет делать копии критически важных системных файлов: user.dat, system.dat (это реестр), msdos.sys, autoexec.bat, config.sys, win.ini, system.ini и некоторых других. Результатом работы утилиты является исполняемый файл ERD.exe, который можно сохранить на дискете или на жёстком диске. В случае краха Windows (невозможности загрузки) или при появлении других проблем (некорректная работа некоторых приложений, появившиеся сбои Windows после инсталляции какой-то программы) - всегда можно восстановить систему, запустив файл ERD.exe из Dos-режима. При запуске утилита выводит на экран меню, из которого можно выбрать опции восстановления.

Кроме этого средства восстановления реестра Windows и самой Windows - имеются в составе всех, сколько-нибудь значимых пакетов соответствующего профиля: Norton Utilities, Norton Antivirus, Nuts&Bolts и т.д. Также для этой цели существует масса специализированных утилит.

Windows NT. В Windows NT Вы может использовать или опцию "Last Known Good", или утилиту RDISK, чтобы восстановить системный реестр к устойчивой рабочей конфигурации.

6.Оптимизация системного реестра

Под оптимизацией системного реестра (а следовательно и Windows) следует понимать:

1. Очистка реестра от мусора (который остаётся после деинсталляций различных программ и других манипуляций с реестром). Разумеется делать это лучше автоматически. Существует ряд утилит способных выполнить эту задачу (в большей или меньшей степени; у каждой утилиты свои критерии очистки). Это: Microsoft RegClean, Norton WinDoctor из пакета Norton Utilities, Norton System Check, входящая в состав Norton CrachGuard DeLuxe, а также утилиты очистки из пакетов Quarterdeck CleanSweep, Norton CleanSweep и другие.

Для начинающих пользователей можно порекомендовать совместное использование пары: Microsoft RegClean и Norton WinDoctor (или Norton System Check).

2. Сжатие реестра. В процессе эксплуатации Windows часто приходится устанавливать и удалять различные программы или изменять их параметры. В результате этих действий (даже после вполне корректной деинсталляции программ) в системном реестре остается много ненужной информации и пробелов между записями, так как Windows не умеет автоматически сжимать реестр. Сжать реестр в Windows 95 OSR2 и в Windows 98 можно несколькими способами:

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

Запустите из командной строки утилиту REGEDIT:

REGEDIT /E REGTXT.REG

Эта команда создаст текстовую копию Вашего реестра в файле REGTXT.REG. (При запуске со знаком вопроса в командной строке - REGEDIT /? - REGEDIT выводит справку по всем возможным ключам командной строки.)

REGEDIT /C REGTXT.REG

Обычно реестр при этом худеет на несколько сотен килобайт.

Важное замечание. Имейте в виду, что REGEDIT из первой версии Windows 95 - 4.00.950 имеет ошибку, которая не позволяет обрабатывать большие реестры (объемом более 1 Мб), поэтому в данном случае можно лишь посоветовать попробовать найти исправленную версию REGEDIT. В Windows 95 OSR2 и Windows 98 такой проблемы нет.

Важно! Гораздо эффективнее (и главное - автоматически) эту работу проделает специализированная утилита сжатия реестра из пакета Nuts&Bolts (однако следует помнить, что самая первая версия этого пакета не имеет утилиты сжатия реестра Windows; более поздние версии имеют эту утилиту). Кроме этого сжатием реестра занимается также и Norton Optimization Wizard из пакета Norton Utilities (3 версия и выше). Есть и другие программы, работающие в этом направлении. Вам решать, чем пользоваться.

Реестр представляет из себя важнейший компонент операционных систем семейства Windows. Он достаточно сложен для понимания обычному пользователю. Что же представляет из себя реестр Windows? Реестр — это централизованная база данных, хранящая все настройки операционный системы и работающих в ней приложений. Реестр содержит информацию обо всех аппаратных устройствах, сведения о расширениях имен файлов, всех системных компонентов и работающих в системе приложениях, сетевые параметры, информацию безопасности и т.д.

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

Рассмотрим более подробно, каким образом компоненты Windows 7 взаимодействуют с системным реестром:

  1. Программа Windows Setup (программа установки) — при первом запуске собирает информацию о системе и создает реестр на основе полученных данных. При установке драйверов или приложений, программа-установщик читает из реестра информацию и добавляют туда свои конфигурационные данные. Наличие реестра позволяет всем программа получать доступ к централизованной базе данных и взаимодействовать друг с другом. Помимо этого, хранимая в реестре информация позволяет корректно удалить приложение, при этом не затрагивая такие важные компоненты как, например, библиотеки DLL.
  2. Среда восстановления Windows (WinRE) — набор средств, предназначенных для диагностики поврежденной системы и восстановления ее после серьезных ошибок. WinRE активно работает с реестром, и одна из выполняемых задач — это восстановление поврежденного реестра.
  3. Менеджер загрузки Windows (Windows Boot Manager) — Диспетчер загрузки получает доступ к базе данных BCD (Boot Configuration Data), которая хранится в реестре. После чтения конфигурационных данных менеджер загрузки передает управление Загрузчику Windows — файлу winload.exe, который, в первую очередь, читает необходимые данные из реестра, а затем загружает в память ядро операционной системы (%system32%\ntoskrnl.exe) и уровень аппаратных абстракций (%system%\hall.dll), а также все драйверы начальной загрузки и DLL режима ядра. Вот почему в случае отсутствия или повреждения файлов реестр операционная система просто не загрузится.
  4. Диспетчер PnP — отвечает за обнаружение устройство по двум параметрам: идентификатору поставщика (vendor ID, VID) и идентификатору устройства (device ID, DID). Когда диспетчер PnP определяет уникальную комбинацию VID и DID, он запрашивает информацию о шине, на которой обнаружено устройство и проверяет установлен ли драйвер для этого устройства. В случае, если драйвер не установлен подсистема PnP должна найти подходящий INF-файл для инсталяции драйвера и начать его установку.
  5. Диспетчер питания (Power Manager) — тесно взаимодействует с диспетчером PnP, приложениями, поддерживает разнообразные схемы управления электропитанием и управляется групповыми политиками, а вся эта информация хранится в реестре.
  6. Драйверы устройств — обмениваются с реестром параметрами загрузки и конфигурационными данными. Драйвер должен сообщить об используемых им системных ресурсах. Сами приложения и драйверы устройств могут считывать эту информацию из реестра, предоставляя пользователям удобные средства для установки и конфигурирования.
  7. Административные средства — административные средства Windows, в том числе утилиты из Панели управления и программы из группы Администрирование представляет собой наиболее удобные и безопасные средства модификации реестра.
  8. Пользовательские профили (user profiles) — вся информация, относящаяся к конкретной учетной записи пользователя и ассоциированными с ней правами, хранится в реестре. Групповые политики также хранятся в реестре.
  9. Аппаратные профили (hardware profiles) — представляет собой набор инструкций, с помощью которых можно указать операционной системе, драйверы каких устройств должны загружаться при запуске компьютера.
  10. Файловые системы — начиная с Windows Vista как файловые системы, так и реестр основаны на транзакциях. На практике это означает, что если набор операций над файлами и реестром помечен как транзакция, то в случае неудачи хоть одной из этих операций всю транзакцию можно «откатить» в исходное положение.
  11. Подсистема безопасности Windows 7 — подсистема безопасности со всеми ее функциональными возможностями, включая контроль учетных записей (User Account Control, UAC), также реализована на базе реестра и используется для его же защиты. Принцип действия UAC заключается в ограничении привилегий, предоставляемых запускаемым приложениям, уровнем привилегий обычного пользователя. Иными словами, даже если пользователь, запускающий приложение, и обладает административными правами, запускаемые им приложения таких привилегий не имеют, если только пользователь явно не запускает их от имени администратора. Таким образом, с повышенным уровнем привилегий запускаются лишь приложения, которым пользователь доверяет.
  12. Сетевые компоненты Windows — включают драйверы сетевых адаптеров, параметры настройки сетевых протоколов и сервисов, а также параметры сетевой безопасности и средства защиты сети от атак. Все это также хранится в реестре. Например, база данных Брандмауэра Windows (Windows Firewall) находится в реестре. Многие брандмауэры сторонних производителей также создают в реестре свои ключи, и, следовательно, успешная атака на реестр открывает путь к вторжению извне.

Файловая система на жестком диске имеет много чего общего с логической структурой реестра. Реестр содержит ключи (keys) и параметры (values), которые соответствуют каталогам и файлам на жестком диске. Ключи реестра могут содержать в себе вложенные ключи (подкаталоги). Параметры реестра (также как и файлы) хранят данные. Ключи, находящиеся на самом верхнем уровне иерархии, называются корневыми ключами (root keys). Схема именования ключей и параметров реестра похожа на пути в файловой системе. Типичный путь к вложенному ключу реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet. Реестр Windows 7 содержит пять корневых ключей: HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG.

Чтобы зайти в реестр Windows 7 , нажмите сочетание клавиш win + R (появится окно «Выполнить»), после чего введите и нажмите Enter .

Появиться окно редактора реестра.

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

Дескриптор (handle) — это значение, применяемое для уникального описания ресурса, к которому программа может получить доступ.

Описание корневых ключей показано в таблице ниже.

Имя корневого ключа Описание
HKEY_LOCAL_MACHINE Содержит глобальную информацию об аппаратных средствах и операционной системе, в том числе: тип шины, системная память, драйверы устройств и управляющие данные, используемые при запуске системы. Информация, содержащаяся в составе этого ключа, действует применительно ко всем пользователям, регистрирующимся в системе. На верхнем уровне иерархии реестра для этого ключа имеются три псевдонима: HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG и HKEY_DYN_DATA.
HKEY_CLASSES_ROOT Содержит ассоциации между приложениями и типами файлов (по расширению имени файла). Кроме того, этот ключ хранит информацию OLE , ассоциированную с объектами COM, а также данные по ассоциациям файлов и классов.
HKEY_CURRENT_CONFIG Содержит конфигурационные данные для текущего аппаратного профиля. Аппаратные профили (Hardware profiles) представляют собой наборы изменений, внесенных в стандартную конфигурацию сервисов и устройств, установленную данными ключей Software и System коревого ключа HKEY_LOCAL_MACHINE. В ключе HKEY_CURRENT_CONFIG отображаются только изменения.
HKEY_CURRENT_USER Содержит профиль пользователя, в данный момент зарегистрированного в системе, включая переменные окружения, настройку рабочего стола, параметры настройки сети, принтеров и приложений. Этот ключи представляет собой ссылку на ключ HKEY_USERS\user_SID, где user_SID — идентификатор безопасности (Security ID) пользователя, зарегистрированного в системе на текущий момент.
HKEY_USERS Содержит все активно загруженные пользовательские профили, включая HKEY_CURRENT_USER, а также пользовательский профиль по умолчанию (.DEFAULT). Пользователи, получающие удаленный доступ к серверу, не имеют профилей, содержащихся под этим ключом, — их профили загружаются в реестры на собственных компьютерах.

Данные реестра поддерживаются в виде параметров, расположенных под ключами реестра. Каждый параметр характеризуется именем, типом данных и собственно значением. Три части параметра реестра всегда располагаются в порядке, показанной на рисунке ниже:

В таблице ниже перечислены основные типы данных, определенные и используемые в Windows 7.

Имя корневого ключа Описание
REG_BINARY Двоичные данные. Большинство аппаратных компонентов используют информацию, которая хранится в виде двоичных данных. Редакторы реестра отображают эту информацию в шестнадцатеричном виде.
REG_DWORD Данные представлены в виде значения, длина которого составляет 4 байта. Этот тип данных используют многие параметры драйверов устройств и сервисов. Редакторы реестра могут отображать такие данные в двоичном, шестнадцатиричном и десятичном формате.
REG_EXPAND_SZ Расширяемая строка данных, представляет из себя текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения.
REG_MULTI_SZ Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк, обычно имеют этот тип данных.
REG_SZ Текстовая строка в формате, удобном для восприятия человеком. Данный тип присваивается значениям, представляющим собой описания компонентов.
REG_DWORD_ 32-разрядное число, представляет из себя эквивалент REG_DWORD. Самый младший байт хранится в памяти первым в числе.
REG_DWORD_ 32-разрядное число, представляет из себя эквивалент REG_DWORD. Самый старший байт хранится в памяти первым в числе.
REG_LINK Символическая ссылка UNICODE. Этот тип данных предназначен для внутреннего использования. Типа данных REG_LINK позволяет одному элементу реестра ссылаться на другой ключ или параметр.
REG_NONE Не имеет определенного типа данных.
REG_QWORD 64-разрядное значение
REG_QWORD_
LITTLE_ENDIAN
64-разрядное число, представляет из себя эквивалент REG_QWORD. Самый младший байт хранится в памяти первым в числе.
REG_QWORD_
BIG_ENDIAN
64-разрядное число, представляет из себя эквивалент REG_QWORD. Самый старший байт хранится в памяти первым в числе.
REG_RESOURCE_LIST Список аппаратных ресурсов, применяется в ветви HKEY_LOCAL_MACHINE\HARDWARE
REG_FULL_RESOURCE_ Дескриптор (описатель) аппаратного ресурса, применяется в ветви HKEY_LOCAL_MACHINE\HARDWARE
REG__RESOURCE_ Список необходимых аппаратных ресурсов, применяется в ветви HKEY_LOCAL_MACHINE\HARDWARE

Реестр подразделяется на составные части, которые разработчики назвали ульями (hives), по аналогии с ячеистой структурой пчелиного улья. Улей представляет собой дискретную структуру ключей, вложенных ключей и параметров, берущую начало в вершине иерархии реестра. Отличие ульев от других групп ключей состоит в том, то они являются постоянными компонентами реестра. Ульи не создаются динамически при запуске системы и не удаляются при ее остановке.

Данные ульев реестра, определяющие общесистемные параметры конфигурации, хранятся в файлах, которые размещаются в каталогах %SystemDrive%\Boot\BCD и %SystemRoot%\System32\Config. Ульи реестра, задающие пользовательскую конфигурационную информацию хранятся в %SystemRoot%\Users\Username.

___________________________

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

Забегая вперед, отмечу: тема эта интересна, но тут целый набор серьезных проблем. Хотя кто сказал, что нам это не по плечу? 🙂

Что такое реестр, или немного лирики

С точки зрения операционной системы Windows, реестр - это уникальная кладовка. В этой своеобразно выстроенной иерархической базе данных хранятся настройки, данные, регистрационная информация и прочая хрень почти обо всем в системе, начиная с программ и заканчивая настройками конкретного пользователя. В реестре хранится практически все. Несмотря на то что некоторые программы предпочитают хранить свои настройки в ini-конфигах (особенно программы, написанные для Win 3.11. – Прим. ред.), сама Windows всю нужную информацию о самой себе считывает из реестра. Справедливости ради отметим, что в *nix-like операционных системах до сих пор господствует система хранения настроек во всевозможных конфигах.

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

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

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

Ну и что?

Реестр - одновременно и сильная и слабая сторона Windows. Сильная сторона реестра в том, что для разработчиков программного обеспечения отпадает необходимость манипулировать туевой хучей конфигов, как это, например, реализовано в никсах. Удобен реестр и для создателей COM-компонентов - система автоматом регистрирует такой компонент в реестре и облегчает задачу по его дальнейшему использованию.

Слабость реестра в том, что доступ к модификации чувствительных областей реестра позволяет управлять Windows любой программе, написанной каким-нибудь новоявленным малварщиком. Вспомни хотя бы самую знаменитую ветку реестра Windows, позволяющую запускать программы на старте ОС:).

Если в Windows 98 реестр могли починять все, кому это взбредет в голову, то начиная с Windows XP доступ к реестру имеют только пользователи с учетной записью администратора. В Vista+ доступ к реестру находится под защитой UAC. Оно и понятно.

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

Интерфейс

Для работы с реестром напрямую Windows предлагает программисту целый набор WinAPI, которые должны быть знакомы любому системному разработчику, - это Reg*-функции, такие как RegOpenKey, RegQueryValue и так далее. В ядре Win это NtOpenKey, NtQueryValueKey и целый ряд других. Описывать их особого смысла нет - всю документацию по надлежащему использованию этих функций можно найти в MSDN.

Здесь стоит отметить вот что. Антивирусы и проактивки для контроля за пользовательскими действиями устанавливали перехваты на упомянутые функции, как в ядре, так и в юзермоде.

С выходом Win7 x64 ситуация изменилась, и я уже об этом как-то писал. Разработчики Windows решили отказаться от возможности перехватывать потенциально опасные функции в ядре Win. Теперь переменная KeServiceDescriptorTable в x64 больше экспортируется, да и переписать нужный участок кода не выйдет - PatchGuard не даст. Есть, конечно, садомазохистские решения по обходу этих ограничений - но там гемора будет больше, чем профита. Тем более что Microsoft предлагает удобные колбеки ObRegisterCallbacks для контроля за реестром.

INFO

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

А теперь - о самом интересом

Но что же такое реестр на самом деле? Если заглянуть в папку WINDOWSsystem32config, то можно увидеть там несколько файлов: system, software, security, SAM и несколько других.

Это файлы реестра.

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

Таким образом, реестр изнутри можно весьма приблизительно назвать «виртуальным сочетанием файлов реестра». После старта системы эти файлы находятся как в файле подкачки (paged pool), так и в невыгружаемой памяти (nonpaged).

Структура реестра

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

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

И что со всем этим теперь делать?

Сразу огорчу: запросто пошаманить напрямую с реестром в юзермоде не получится, система не даст этого сделать, как это обычно бывает с файлами, занятыми другими процессами. Если попытаться извернуться, то можно только прочесть такой «занятый» файл, и то если угадать с флагами, с которыми он был открыт. К сожалению, записать в интересующий нас «файл реестра» информацию не выйдет. Кстати, фича с записью нужной информации в реестр может прокатить, если писать в реестровские *.BAK-файлы, они точно доступны под запись.

Итак, следи за рукой:).

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

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

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

Первый способ заключается в том, что для конфигурационного менеджера (Configuration Manager, часть операционной системы, если ты не в курсе) реестр есть не более чем набор строго определенных структур в операционной памяти, с которыми, как оказывается, очень даже легко работать. Какие это структуры, спросишь ты? HBASE_BLOCK, HHIVE, HBIN, HCELL, HMAP_ENTRY, HMAP_DIRECTORY, куча CM_* структур, используемых конфиг-менеджером для управления реестром. С точки зрения операционной системы, реестр - это просто набор регламентированных структур в оперативной памяти. К примеру, сигнатура «regf», определяющая «файл реестра», есть заранее определенная константа:

Define HBASE_BLOCK_SIGNATURE 0x66676572 typedef struct _HBASE_BLOCK { ULONG Signature; //0x66676572 ULONG Sequence1; ULONG Sequence2; LARGE_INTEGER TimeStamp; .... } А вот и сигнатура «regf»…

То есть смысл всего этого моего монолога в том, что существует шикарная возможность манипуляции с реестром на уровне операционной системы, но при этом не используя ее штатные средства. Как это возможно? Мы просто сэмулируем действия самой операционной системы, точно так, как она сама работает с реестром! Важно, как я уже говорил, понять, что для самой ОС реестр не более чем набор соответствующих структур в памяти.

Если у нас будет доступ к файлам реестра на уровне ядра, то чем мы хуже самой ОС, чтобы установить свой порядок?

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

Зная, как выглядят структуры, нужно вспомнить, что каждый файл, улей реестра, имеет свою константную сигнатуру. Например, «regf» - это 0x66676572. Для улья сигнатура будет равна 0xBEE0BEE0. Имея доступ к памяти из ядра, мы можем довольно легко найти эти сигнатуры в памяти, просто просканив ее. Еще можно просканить память в поисках сигнатуры «CM10» - именно она присваивается конфиг-менеджером блоку подкачиваемой памяти, который выделяется под структуру CMHIVE. Полагаю, найдя в памяти интересующий нас элемент, ты придумаешь, что делать с ним дальше:).

Как, к примеру, изменить значение ячейки реестра? Значение хранится в поле CM_KEY_VALUE->Data, поэтому, если у тебя возникнет задача изменить какое-либо поле в конкретном ключе реестра, ищи значение именно там:

Typedef struct _CM_KEY_VALUE { WORD Signature; // #define CM_KEY_VALUE_SIGNATURE 0x6B76 WORD NameLength; ULONG DataLength; ULONG Data; //<---------- данные ячейки будут здесь ULONG Type; WORD Flags; WORD Spare; WCHAR Name; } CM_KEY_VALUE, *PCM_KEY_VALUE;

Второй вариант является своеобразной модификацией первого. Если знаешь, существует одна особенность при работе с реестром - все изменения, то есть «создание новых ключей / запись / удаление ключей», как правило, вступают в силу после перезагрузки системы (ну или после перезагрузки эксплорера, это такой хак-метод). До этого все изменения находятся словно в подвешенном, «dirty»-состоянии. Мало того, система при обращении с реестром общается с ним через кеш файловой системы. Это понятно - обращений к реестру может быть сотни в секунду, соответственно, полагаться при этом на быстродействие файловой системы неразумно, тут никакое быстродействие не спасет. Поэтому система и работает с реестром, что называется, виртуально, через кеш файловой системы. И тут, чтобы вытащить кишки реестра на свет, надо залезть в кеш! Как это делается, уже описывалось в тырнетах, в том числе и в .

Pro & Cons, или вместо заключения

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

Засим закончу. Удачного компилирования и да пребудет с тобой Сила!

WWW

Обязательна к прочтению статья Марка Руссиновича о реестре «Inside the Registry», нашелся даже русский перевод . Замечательная тулза для сбора информации о реестре: http://goo.gl/iSSVy .

В файлах SYSTEM.DAT и USER.DAT в каталоге Windows 95/98 или в папке C:\W\System32\Config\ в Windows NT хранится так называемый системный реестр, содержащий большое количество информации. Кроме записей, необходимых Windows, большинство программ при установке записывают туда и свою собственную информацию. Чтобы внести изменения в реестр, необходимо открыть его с помощью программы, предназначенной для этого. Примером может служить программа REGEDIT, поставляемая в стандартном комплекте Windows . Для ее запуска откройте диалоговое окно Пуск/Выполнить , введите Regedit и нажмите OK.

Вы увидите окно, разделенное на две части. В левой находится навигатор, похожий на навигатор Проводника, а справа собственно информация. Реестр состоит из шести разделов: HKEY_CLASSES_ROOT, HKEY_CURRENT_USER , HKEY_LOCAL_MACHINE , HKEY_USERS , HKEY_CURRENT_CONFIG и HKEY_DYN_DATA . В каждом разделе содержатся папки. Если в папке или разделе есть подпапки, то слева от этой папки находится значок "плюс ". При нажатии на него эта папка "разворачивается", а значок превращается в "минус ", нажав на который ее можно снова "свернуть ". Если же нажать на значок папки или ее название, то в правом окне появится список тех параметров, которые содержатся в этой папке (но не в подпапках!). Каждый параметр состоит из его имени и значения. Для каждого параметра существует свой путь, по которому его можно найти. Путь состоит из последовательности папок, в которых находится этот параметр, начиная с родительской папки (это один из шести вышеперечисленных основных разделов). Примером такого пути может быть HKEY_CURRENT_CONFIG\ Display\ Settings , а названием параметра Resolution. В объединении эти два значения - параметр и путь к нему (его часто называют адресом) указывают на уникальный параметр. Например, к двум различным параметрам может быть один и тот же путь, два параметра могут иметь одинаковые названия, но лежать в различных папках и подпапках, но не может существовать двух параметров с одинаковым адресом и именем. По реестру можно осуществлять поиск (используя меню, или сочетанием клавиш CTRL + F ).

Выделив нужный раздел (нажав на значок раздела или его имя), в нем можно создать параметр, или подраздел. Для этого необходимо воспользоваться меню Правка/Создать . В системном реестре Windows существует 3 вида параметров: строковой , двоичный , и DWORD . В строковом хранится одна строка (string ), в двоичном - двоичное значение , в DWORD - десятичное или шестнадцатеричное значение. При создании параметра необходимо указать его имя. Затем, дважды нажав на нем в правом окне, можно ввести значение параметра (или изменить существующее).

Если в совете сказано установить значение параметра, это значит, что необходимо изменить существующее значение параметра на нужное, или, если параметр с таким именем отсутствует, создать его, а затем изменить содержимое.

В конце работы для большинства изменений необходимо закрыть REGEDIT и перезагрузить компьютер.Ну, во-первых разберемся, что это такое: реестр Windows . Когда мы устанавливаем или удаляем программы, изменяем параметры Windows ставим новое оборудование, все это фиксируется и записывается в реестр. Можно сказать так, реестр - это сердце Windows. Чтобы посмотреть или отредактировать реестр надо запустить программу Regedit (Пуск - Выполнить - Regedit). Физически, реестор хранится в каталоге Windows (95/98) под именами User.dat и System.dat . Сразу говорю, если не знаете то, что хотите изменить на 100% не изменяйте, а иначе грош цена. Ну, а для тех кто все таки изменил даю подсказку. При удачной загрузке, Windows делает резервные копии реестра под именами User.da0 и System.da0 . Этим и воспользуемся. Конечно можно создать свои резервные копии на всякий "пожарный". Если Windows не грузится, то при загрузке зажимаем Ctrl. Как появиться меню выбираем "Command prompt only ", переходим в папку Windows ("CD C:\Windows" ) и наберите команду scanreg / restore Windowse NT - rdisk ). Теперь перезагрузитесь и Windows должен запуститься. Если такой программы нет, то придется набирать в командной строке из папки Windows:

attrib -h -r -s system.dat
attrib -h -r -s system.da0
copy system.da0 system.dat
attrib -h -r -s user.dat
attrib -h -r -s user.da0
copy user.da0 user.dat

Ну, а теперь перейдем непосредственно к реестру.

1.)Откройте regedit , найдите ключ

HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\CurrentVersion\Uninstall.

Здесь Вы найдете полный список установленных программ. Если каких то программ уже нет, удалите ненужные папки с их названиями (неполный список отображается в "Панель управления - Установка и удаление программ").

2.)В ключе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Run

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

HKEY_USERS\.DEAFAULT\Software\Microsoft\Windows\CurrentVersion и
HKEY_USERS\(Имя пользователя)\Software\Microsoft\Windows\CurrentVersion

3.)Вот и все, разминка закончена, и мы переходим к Главному меню .

Чтобы избавиться от пункта Избранное (Windows 98) , зайдите в раздел

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ Policies\Explorer

и создайте здесь Двоичный параметр NoFavoritesMenu со значением 01 00 00 00 . Все! Теперь пункт Избранное больше появляться не будет. Удалите созданный параметр или измените его значение на 00 00 00 00 , чтобы вернуть пункт на место. Избавляться от других пунктов можно аналогично:

Документы - параметр NoRecentDocsMenu
Настройки - NoSetFolders
Найти - NoFind
Завершение работы - NoClose
Завершение сеанса... - NoLogOff.

Также можно отменить работу правой кнопкой мыши в главном меню, для этого создайте тамже DWORD -параметр под именем NoChangeStartMenu с значением 1 . Готово! Ну и последние штрихи. Нравится сообщение о том, с какой кнопки следует начать работу? Нет? Тогда создаем DWORD- параметр с именем NoStartBanner и значением 1.

4.)Зайдите на

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Winlogon

и создайте Строковый параметр LegalNoticeCaption. В качестве значения введите "Обнаружен вирус "Чернобыль"", создайте еще один строковый параметр LegalNoticeText с значением "Нажмите "Ок" и все данные на жестком диске будут уничтожены". Перезапустите Windows и наслаждайтесь результатом. В первом параметре вписываем заголовок, а во втором - сам текст.

5.)Теперь можно изменить часики в нижнем правом углу. Зайдите на

HKEY_CURRENT_USER\Control Panel\International

и создайте строковый параметр sTimeFormat

Его значение "HH:mm ", где HH - часы, : - разделительный знак, а mm - минуты. Для вступления в силу изменений необходима перезагрузка. Весело посмотреть как друг будет мучится настраивать часы если поменять местами HH и mm! Ну, а если хотите нагадить очень силно, тогда надо сделать так: Hm:mH"mH;Hm и тд.

6.)Чтобы не было в значках ярлыков стрелочек, найдите ключ HKEY_CLASSES_ROOT\Piffile и удалите параметр IsShortcut , тоже самое следует проделать в папке Lnkfile . Перезагрузите компьютер и наслаждайтесь результатом.

7.)Путь к инсталляционным файлам Windows 95/98 лежит в

HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\CurrentVersion\Setup.

Измените его и Windows будет искать установочные файлы при добавлении компонентов или изменении параметров системы.

8.)Чтобы убрать "ладошку" с зашареных ресурсов, достаточно удалить значении По умолчанию из ключа

HKEY_CLASSES_ROOT\Network\SharingHandler

9.)Еще Вы можете вообще убрать с рабочего стола все значки. Для этого создайте в ключе

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

DWORD-параметр с именем "NoDesktop ". Перезагрузитесь и увидете самый чистый в мире Рабочий стол.

10.)Для того, чтобы скрыть диски в проводнике, заходим в

HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\Explorer

и создаем здесь Двоичный параметр с именем "NoDrives" .

Значение будет зависить от того, какие диски хотите скрыть:

Диск A - значение 01 00 00 00
B - 02 00 00 00
C - 04 00 00 00
D - 08 00 00 00
E - 10 00 00 00
F - 20 00 00 00

Если хотите скрыть несколько дисков, то нужно просуммировать их значения. Но учтите, что эти числа шестнадцатеричные. Чтобы верно рассчитать, воспользуйтесь калькулятором (Программы - стандартные - Калькулятор) . Выберите в меню Калькулятора "Вид - Инженерный ", затем выберите "Hex" и просчитайте. Например, чтобы скрыть диски C и D надо плюсовать 04 00 00 00 и 08 00 00 00 . Вводим в значение параметра 0C 00 00 00 . Чтобы скрыть диски A и E надо просуммировать 01 00 00 00 и 10 00 00 00, получаем результат 11 00 00 00.

11.)Откройте Свойства: Экран , здесь и поскрываем некоторые вкладки. В редакторе реестра найдите раздел

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System

создайте здесь DWORD -параметр с именем NoDispBackgroundPage и значением 1 . Теперь вкладка Фон отображаться не будет. Остальные вкладки скрываются следующими параметрами:

NoDispAppearancePage - Оформление
NoDispScrSavPage - Заставка
NoDispSettingPage - Настройка.

12.)Теперь сделаем так, чтобы пункт Открыть с помощью... всегда появлялся в контекстном меню. Для этого найдем ключ HKEY_CLASSES_ROOT\*\ и создадим в нем раздел shell (если его нет). Здесь создадим еще раздел "openas ", а в нем еще "command ". Измените значение "По умолчанию " на "C:\WINDOWS\rundll32.exe shell32.dll,OpenAs_RunDLL %1 ". Готово, можете проверять.

13.)Для изменения скорости выпадания Главного меню зайдите в ключ

HKEY_CURRENT_USER\Control Panel\desktop

и создайте Строковый параметр Menu Show Delay. В значение введите время задержки (в миллисекундах) и перезагрузитесь.

14.)Сейчас попробуем пункт Открыть в Блокноте поместить в контекстное меню. Зайдем в раздел HKEY_CLASSES_ROOT\*\shell (Если нет - создайте). Создайте раздел "Open " и измените По умолчанию на "Открыть в Блокноте ". Теперь создайте раздел "command" а в нем измените По умолчанию на "notepad.exe %1 ". Готово.
15.)А сейчас поиграемся с Internet Explorer"ом. Хотите изменить обои браузера? Пожалуйста. Зайдите в ключ

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar

и создайте Строковый параметр "BackBitmap ". А в качестве параметра введите путь к рисунку в формате Bmp и перезапустите браузер. Но это еще не все.

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main

создайте новый Строковый параметр Window Title . В значении введите то, что вы желаете увидеть в заголовке после названия страницы, перезапустите браузер и наслаждайтесь. Точно также будет выглядить и проводник.

16.)Если Вы хотите любоваться именем или просто словом после часов в Systray (нижняя панель) то зайдите на

HKEY_CURRENT_USER\Control Panel\International\

и создайте два строковых параметра: s1159 и s2359 . В их значение следует ввести нужное имя. Ограничение - 8 букв.

17.)Когда надо перезапустить реестр, а перезагружать машину не охота, то в некоторых случаях поможет следующее: нажмите Ctrl+Alt+Del , затем выберите Explorer и кнопку "Завершить задачу" . На предложение выключить машину отвечайте отказом, затем жмите "Снять задачу " в следующем окне, после чего увидите, как исчезла и появилась "Панель задач ".

Не все работает в Windows 95

Восстановление реестра

При работе с реестром надо соблюдать осторожность. Удаление каких-либо важных данных случайно или по незнанию может привести к краху операционной системы. Тогда спасти положение может только восстановление последней работоспособной копии.

Если Вы собрались поэкспериментировать с реестром, предварительно сохраните на диске файлы SYSTEM.DAT и USER.DAT. Они находятся в каталоге, куда была установлена операционная система и имеют атрибуты "только для чтения" и "скрытый". В случае если реестр будет серьезно испорчен, Вы сможете переписать эти файлы в каталог Windows, установить нужные атрибуты и реестр будет как новенький. Только не вздумайте восстанавливать эти файлы, когда загружен Windows, иначе система накроется окончательно и спасет ее только полная переустановка! Для восстановления этих файлов надо предварительно перезагрузиться в DOS и уже там заменять испорченные файлы хорошими.

Но это не единственный вариант восстановления данных. Дело в том, что операционная система, при каждом удачном запуске сохраняет копию реестра в CAB-файле, который записывается в скрытый каталог SYSBCKUP каталога Windows. По умолчанию, хранятся последние пять копий. Это число может варьироваться от 0 до 99 и устанавливается значением ключа MaxBackupCopies в файле scanreg.ini в каталоге Windows. Правда не стоит устанавливать слишком большое значение, т.к. файлы занимают немало места (один файл имеет размер больше мегабайта).

Чтобы восстановить реестр с одной из этих резервных копий надо перезагрузиться в DOS и выполнить команду

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

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

которая в случае нормально прошедшей проверки создаст резервную копию.

Еще один вариант резервирования и восстановления реестра состоит в экспортировании раздела или целой ветви, которую Вы планируете изменять. Это можно осуществить в Regedite для Windows в меню "Реестр". Выделите нужный раздел и щелкните по пункту "Экспорт файла реестра". После задания имени файла данные этого раздела будут в него экспортированы. Файл имеет расширение REG. Для его импортирования в реестр достаточно дважды щелкнуть на нем и данные будут перенесены. Правда этот способ восстановления информации имеет один существенный недостаток: все удаленные или измененные записи будут восстановлены, но вот добавленные записи удалены не будут. Поэтому данный способ больше подходит, если Вы проводите какие-то несущественные изменения, и чтобы откатить их не вводя старые данные заново, можно воспользоваться экспортом/импортом.

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

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

Основные файлы, отвечающие за формирование реестра

Файлы реестра создаются в процессе установки операционной системы и хранятся в папке:

%SystemRoot%\system32\config (обычно C:\windows\system32\config ).

Для операционных систем Windows это файлы с именами:

system
software
sam
security
default
components
bcd-template

В операционных системах Windows Vista, Windows 7, Windows8, , , файлы реестра располагаются в каталоге \Windows\system32\config и имеют такие же имена, однако в этих операционных системах добавился новый раздел реестра для хранения (Boot Configuration Data ) с именем BCD00000000 . Файл с данными этого раздела имеет имя bcd и находится в скрытой папке Boot активного раздела (раздела, с которого выполняется загрузка системы). Обычно, при стандартной установке Windows, создается активный раздел небольшого размера (от 100 до 500 мегабайт в зависимости от операционной системы), который скрыт от пользователя и содержит только служебные данные для загрузки системы – загрузочные записи, менеджер загрузки bootmgr , хранилище конфигурации загрузки BCD , файлы локализации и программы тестирования памяти. Расположение куста bcd зависит от того, как сконфигурирован загрузчик системы при ее установке, и может находиться на том же разделе, где и каталог Windows.

Место расположения файлов реестра в любой версии Windows можно просмотреть с помощью редактора реестра, в разделе:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

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

Структура реестра

Реестр Windows имеет древовидную структуру и состоит из 5 основных разделов реестра:

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

HKEY_ CLASSES_ ROOT (HKCR) - содержит ассоциации между приложениями и типами файлов (по расширениям файлов). Кроме того, в этом разделе находится информация о зарегистрированных типах файлов и объектах COM и ActiveX. Кроме HKEY_ CLASSES_ ROOT эти сведения хранятся также в разделах HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER . Раздел HKEY_LOCAL_MACHINE\Software\Classes содержит параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Параметры, содержащиеся в разделе HKEY_CURRENT_USER\Software\Classes , переопределяют принятые по умолчанию и относятся только к текущему пользователю. Раздел HKEY_CLASSES_ROOT включает в себя данные из обоих источников.

HKEY_USERS (HKU) - содержит настройки среды для каждого из загруженных пользовательских профилей, а также для профиля по умолчанию. В HKEY_USERS находится вложенный раздел \Default , а также другие подразделы, определяемые идентификатором безопасности (Security ID, SID ) каждого пользователя.

 HKEY_CURRENT USER (HKCU) - cодержит настройки среды для пользователя, на данный момент зарегистрировавшегося в системе (переменные окружения, настройки рабочего стола, параметры сети, приложений и подключенных устройств).

Этот раздел дублирует информацию в HKEY_USERS\user SID , где user SID - идентификатор безопасности пользователя, зарегистрировавшегося в системе на текущий момент (узнать SID текущего пользователя можно, набрав в командной строке whoami /user ).

HKEY_CURRENT_ CONFIG (HKCC) - cодержит настройки для текущего аппаратного профиля. Текущий аппаратный профиль включает в себя наборы изменений, внесенных в стандартную конфигурацию устройств, заданную в подразделах Software и System корневого раздела HKEY LOCAL_MACHINE . В HKEY_CURRENT_CONFIG отражаются только изменения. Кроме того, информация этого раздела находится в HKEY_LOCAL_MACHINE\System\CurrentControlSet\HardwareProfiles\Current .

Данные в реестре хранятся в виде параметров, расположенных в ключах реестра. Каждый параметр характеризуется именем, типом данных и значением.

Основные типы данных, применяемые в реестре

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

REG_SZ - Текстовая строка в формате, удобном для восприятия человеком. Значениям, представляющим собой описания компонентов, обычно присваивается именно этот тип данных.

REG_EXPAND_SZ - Расширяемая строка данных. Эта строка представляет собой текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения, например, используется для записи переменных окружения.

REG_MULTI_SZ - Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк в формате, удобном для восприятия человеком, обычно имеют этот тип данных. Строки разделены символом NULL.

REG_BINARY - Двоичные данные. Большинство аппаратных компонентов используют информацию, которая хранится в виде двоичных данных. Редакторы реестра отображают эту информацию в шестнадцатеричном формате.

REG_RESOURCE_LIST - Список аппаратных ресурсов. Применяется только в ветви HKEY_LOCAL_MACHINE\HARDWARE .

Также иногда можно встретить такие типы данных реестра:

REG_RESOURCE_ REQUIREMENTS_LIST - Список необходимых аппаратных ресурсов. Применяется только в ветви HKEY_LOCAL_MACHINE\HARDWARE .

REG_FULL_RESOURCE_ DESCRIPTOR - Дескриптор (описатель) аппаратного ресурса. Применяется только в ветви HKEY_LOCAL_MACHINE\HARDWARE .

REG_QWORD - 64-х разрядное число.

REG_DWORD_ LITTLE_ENDIAN - 32-разрядное число в формате «остроконечников» (little-endian), эквивалент REG_DWORD .

REG_DWORD_BIG_ ENDIAN - 32-разрядное число в формате «тупоконечников» (big-endian).

REG_QWORD_LITTLE_ ENDIAN - 64-разрядное число в формате «остроконечников». Эквивалент REG_QWORD .

REG_NONE - Параметр не имеет определенного типа данных.

Взаимодействие реестра с операционной системой

При запуске компьютера распознаватель аппаратных средств (hardware recognizer ) помещает в реестр список обнаруженных им устройств. Обычно распознавание аппаратных средств осуществляется программой Ntdetect.com и ядром операционной системы Ntoskrnl.exe

При старте системы ядро системы извлекает из реестра сведения о загружаемых драйверах устройств и порядке их загрузки. Кроме того, программа Ntoskrnl.exe передает в реестр информацию о себе (напр. номер версии).

В процессе загрузки системы драйверы устройств обмениваются с реестром параметрами загрузки и конфигурационными данными. Драйвер устройства сообщает об используемых им системных ресурсах, включая аппаратные прерывания (IRQ ) и каналы доступа к памяти (DMA ), чтобы система могла включить эти данные в реестр. Кстати, реестр позволяет создавать несколько аппаратных профилей. Аппаратный профиль (hardware profile ) представляет собой набор инструкций, с помощью которого можно указать операционной системе, драйверы каких устройств должны загружаться при запуске компьютера. По умолчанию системой создается стандартный аппаратный профиль, который содержит информацию обо всех аппаратных средствах, обнаруженных на компьютере.

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

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

При администрировании системы. Когда пользователь вносит изменения в конфигурацию системы с помощью средств администрирования системы (например при помощи Панели управления или оснастки MMC ), все изменения сразу отражаются в системном реестре. По сути средства администрирования представляют собой наиболее удобные и безопасные средства модификации реестра. Кстати, к средствам администрирования можно отнести и редактор реестра (regedit.exe ), ведь все изменения в систему можно вносить непосредственно правкой реестра.

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

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