Что находится в реестре windows. Реестр Windows для начинающих. Базовые понятия, мониторинг и уход

  • 27.07.2019

Пожалуй каждый из вас слышал слово «реестр», однако вопросом «Что же это такое» задавались немногие, а зря. Ведь умение редактировать реестр может сэкономить кучу времени, денег, нервов и сил. Как запустить реестр операционной системы Windows 7, а так же основные способы его применения подробно рассматриваются в данной статье.

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

Аналогичная ситуация происходила во времена использования файловой системы Fat16, имевшей серьезные проблемы с быстродействием. Тогда и было принято решение ввести реестр для упорядочения информации. Со временем проблемы, решавшиеся реестром, исчезли, однако его оставили из-за обратной совместимости.

Реестр Windows – это иерархически построенная база данных параметров и настроек установленных программ.

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

Запустить реестр Windows 7 можно двумя способами:

  1. Пуск → в строке поиска пишем regedit → в найденных результатах открываем файл regedit.exe.
  2. Запускаем проводник → переходим в папку C:\Windows → ищем файл regedit.exe и открываем его.

Если вы все сделали правильно, откроется редактор реестра.

Редактирование реестра. Экспорт/Импорт

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

При работе с параметрами реестра нужно быть предельно внимательным и осторожным, ведь реестр – это нервная система Windows. Поэтому перед изменением каких-либо параметров рекомендуется создать копию реестра.

Жмем правой кнопкой мышки по разделу «Компьютер» — Экспортировать – задаем имя, проверяем диапазон экспорта (должно быть «Весь реестр») и указываем папку – жмем сохранить.

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

Для этого кликаем «Файл» – Импорт… — ищем сохраненный нами ранее Реестр.reg и нажимаем «Открыть». Все параметры вернутся к моменту создания копии.

Восстановление пароля администратора с помощью реестра

Для примера, показывающего какие задачи можно выполнить в реестре, рассмотрим такую проблему. Предположим, что вы . Не беда! Его можно изменить с помощью реестра. Для этого нам понадобится .

  1. Загрузитесь с установочного диска. После копирования новых данных нам предложат выбрать язык. Оставляем все как есть и нажимаем «Далее».
  2. В новом окне выбираем « », после чего компьютер выполнит поиск установленных операционных систем.
  3. Может появиться окно с текстом «Обнаружены проблемы в параметрах загрузки». Игнорируем и выбираем операционную систему и жмем «Далее».
  4. В следующем окне выбираем самый нижний параметр « »
  5. В командной строке набираем уже известную нам команду regedit и нажимаем Enter.
  6. В редакторе выделяем HKEY_LOCAL_MACHINE
  7. Затем, в меню Файл выбираем пункт «Загрузить куст».
  8. Переходим в папку С:\Windows\System32\config (буква может отличаться от привычной С). Нас интересует файл SYSTEM .
  9. Вводим любое имя раздела. Например: 888.
  10. Переходим в раздел HKEY_LOCAL_MACHINE\888\Setup . Кликаем 2 раза по параметру:
    • CmdLine , вводим cmd.exe и нажимаем ОК
    • SetupType , заменяем 0 на 2 и нажимаем ОК .

    В результате вышеперечисленных манипуляций должно получиться так:

Реестр представляет из себя важнейший компонент операционных систем семейства 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 .

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

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) сама папка реестра (и вложенные подпапки) скрыта от глаз пользователя. Иными словами, на них стоит соответствующий атрибут. Это директория System Volume Information. Увидеть ее можно только в том случае, если в настройках отображения файлов и папок указать параметр «Показывать скрытые файлы и папки».

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

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

Разделы реестра

Итак, реестр перед нами. В зависимости от версии «операционки» некоторые разделы могут отличаться, однако базовые элементы практически во всех системах одинаковы. Отличия могут быть только незначительными. Так, например, у пользователя установлена ОС Windows XP. Здесь реестр имеет один вид. Реестр другого компьютера, скажем, с установленной ОС Windows 8, может иметь несколько другой вид.

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

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

  • CLASSES_ROOT - это база данных, содержащая информацию обо всех файлах, вернее их типах, систематизированных по расширению, а также сведения о серверах типа COM.
  • CURRENT_USER - папка с персональными данными каждого пользователя, в данный момент использующего систему. Как правило, данные других пользователей, зарегистрированных в системе, в каждом локальном сеансе не отображаются. Однако это абсолютно не значит, что на компьютере при условии установки только одной «операционки» имеется несколько реестров. Такое может наблюдаться только в том случае, если одновременно их инсталлировано две и больше.
  • USERS - общая папка для всех пользователей. Иными словами, это те параметры и настройки, которые используются всеми юзерами без исключения.
  • LOCAL_MACHINE - самый объемный раздел, в котором размещена информация абсолютно обо всех драйверах «железных» и виртуальных устройств, программных компонентах и приложениях, а также о настройках самой «операционки». Кстати, именно к этой папке, вернее, к ключевой записи, в ней присутствующей, обращается система при вызове программы или задействовании возможностей какого-то устройства.
  • CURRENT_CONFIG, как уже понятно, база данных о текущей конфигурации.

Оптимизация реестра

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

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

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

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

Дефрагментация реестра

Что касается дефрагментации, она подобна процессу, производимому при работе с жесткими дисками и их разделами или съемными устройствами типа USB, HDD.

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

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

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

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

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

Заключение

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