Что такое реестр в игре. Общие сведения о реестре Windows

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

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

ОПИСАНИЕ И НАЗНАЧЕНИЕ

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

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

Хранится системный реестр по адресу X:\Windows\System32\сonfig, где X- буква системного диска.

КОРНЕВЫЕ РАЗДЕЛЫ СИСТЕМНОГО РЕЕСТРА

Реестр ОС Windows состоит из нескольких основных разделов:

  • - HKEY_CURRENT_CONFIG (HKCC) - в разделе находится вся информация об аппаратном профиле, который используется на локальной машине во время запуска системы;
  • - HKEY_CURRENT_USER (HKCU) - в разделе хранится информация о конкретном пользователе, который вошел в систему и работает в ней в настоящий момент времени. В этой ветви сохраняются его папки, настройки экрана, установленные параметры для панели управления;
  • - HKEY_CLASSES_ROOT (HKCR) - в разделе содержатся данные о расширениях типов файлов и приложениях, которые при их запуске будут открываться;
  • - HKEY_USERS (HKU) - в этой ветви хранится информация обо всех загруженных активных профилях пользователей конкретного ПК;
  • - HKEY_LOCAL_MACHINE (HKLM) - ветвь для хранения сведений о загрузке ОС Windows, информации о драйверах устройств и аппаратном обеспечении компьютера;
  • - HKEY_USERS (HKU) - ветвь хранит индивидуальные настройки профиля каждого пользователя, который зарегистрирован в системе. Здесь же хранится информация о профиле «по умолчанию» для создаваемых новых пользователей.

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

ВЛИЯНИЕ РЕЕСТРА НА РАБОТУ WINDOWS

Как уже было отмечено ранее, скорость работы системы и ее стабильность напрямую зависит от состояния реестра. Чаще всего система начинает «тормозить», когда реестр увеличивает свой размер. И чем он больше, тем дольше загружается компьютер, так как при запуске ОС системный реестр всегда проверяется на наличие ошибок, после чего делается его резервная копия. Причем, чем больше стоит на компьютере программного обеспечения, тем объемнее становится реестр.

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

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

Теперь, продолжим, замедление открытия программ очень часто вызывается тем, что для быстрого выполнения их загрузки, не хватает оперативной памяти. И часто, чтобы обеспечить необходимое количество объема памяти для какой-то программы, система его добирает из ее общего объема (совокупность ОЗУ и ПЗУ), начиная обращаться к пространству винчестера, т.е. происходит так называемое «свопирование» (часть информации записывается на жесткий диск). В результате, когда при загрузке или работе приложения, ему становится нужна необходимая записанная на диск информация, она считывается намного дольше, чем, если бы система брала их из оперативной памяти.

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

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

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

СПОСОБЫ РЕДАКТИРОВАНИЯ РЕЕСТРА

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

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

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

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

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

Корректируя реестр вручную, нужно быть очень осторожным. Одно неверное действие и работоспособность системы будет нарушена окончательно, а Windows придется переустанавливать.

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

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

МОНИТОРИНГ РЕЕСТРА

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

Утилиты мониторинга довольно просты в применении. Разобраться в них сможет даже человек, который не имеет специального образования. И в этом их большой плюс, так как знать хотя бы приблизительно, что происходит в реестре ОС их компьютера, желательно все пользователям, как опытным, так и начинающим. Например, можно воспользоваться одной из наиболее популярных утилит мониторинга реестра - Registry Monitor (RegMon).

УХОД ЗА РЕЕСТРОМ

Устанавливая, а затем, удаляя различные программы, пользователь ОС Windows не всегда знает, что, как правило, полностью информация о них из реестра не удаляется. Всегда остаются какие-нибудь «хвосты», которые в дальнейшем тормозят работу системы. Чтобы такого не происходило необходимо проводить не только мониторинг реестра, но и обеспечивать уход за ним. Для этого не нужно самому выискивать в реестре оставшиеся записи, сделать это можно при помощи специальных программ, о существовании которых уже упоминалось выше. Хорошо с этой работой справляются программы jv16 PoverTools, CCleaner, Reg Organizer, RegCleaner и другие. С их помощью пользователь сможет не только почистить реестр от «мусора», но и дефрагментировать жесткий диск, отредактировать автозагрузку, очистить историю браузеров, удалить устаревшие файлы по восстановлению системы и пр.

ЗАКЛЮЧЕНИЕ

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

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

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

Оглавление:

Что такое Редактор реестра


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

Как запустить Редактор реестра


Способ 1
Независимо от версии Windows, установленной на вашем компьютере, вот этот метод будет работать:

Способ 2
Исполняемый файл Редактора реестра находится в C:\Windows, а это значит, что вы можете открыть эту папку в Проводнике и запустить файл regedit.exe щелчком мыши.

Кроме того, вы можете создать ярлык для Regedit.exe и поместить его в меню Пуск/в список приложений Windows 8.x, в папку

%ProgramData%\Microsoft\Windows\Start Menu\Programs

Это сделает Редактор реестра видимым в результатах поиска Windows, а также позволит запускать приложение одним кликом мышки.

Общий вид Редактора реестра


Редактор реестра выглядит следующим образом:

Как видно на картинке выше, он состоит из двух панелей:

  • левая отображает иерархическое представление структуры данных, оно называется разделы (или ключи);
  • правая панель отображает параметры . Они представляют из себя пары имя = данные и хранятся внутри ключей.

Что показывает Редактор реестра


Как я упомянул выше, редактор показывает нам разделы и параметры.

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

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

Однако, существуют и виртуальные ключи, которые отображаются в редакторе реестра как обычные файлы, но на деле являются представлением из нескольких файлов или даже отдельных веток реестра. Они существуют, как правило, для обратной совместимости. Например, HKEY_CURRENT_CONFIG - это виртуальное представление, HKEY_CLASSES_ROOT - также виртуальное представление, которое объединяет разделы реестра текущего пользователя и системные разделы.

Обратите внимание, что некоторые файлы реестра не отображаются в окне Редактора реестра. Например, вы никогда не увидите, что хранится внутри файла SAM (Security Accounts Manager). В редакторе реестра он представлен веткой HKEY_LOCAL_MACHINE\SAM\SAM и там якобы пусто. Это сделано по соображениям безопасности.

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

Как создать новый раздел реестра


Чтобы создать новый ключ, щелкните правой кнопкой мыши на родительском разделе в левой панели и выберите команду Создать -> Раздел из контекстного меню.

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

Как создать новый параметр


Чтобы создать новый параметр, необходимо щелкнуть правой кнопкой мыши

  • на текущем разделе слева
    или
  • в пустом месте в правой панели.

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

Как стать владельцем раздела и получить к нему полный доступ


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


Как восстановить TrustedInstaller в качестве владельца раздела


Почти все системные разделы реестра в Windows Vista, 7 и 8 в качестве владельца имеют учётную запись TrustedInstaller. После правки разрешений на раздела необходимо вернуть права собственности для этой учётной записи, иначе операционная система может работать некорректно. Для восстановления собственности TrustedInstaller в Windows Vista, 7 и 8 введите NT Service\TrustedInstaller в поле "Введите имена выбираемых объектов". Нажмите OK.

Как изменить права доступа на раздел реестра


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

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

В первом случае, то есть если разрешения наследуются от родительского ключа, вы должны отключить наследование и скопировать права доступа родительского раздела к текущему ключу, чтобы иметь возможность их менять. Чтобы сделать это в Windows 7, Windows Vista и Windows XP, снимите флажок "Добавить разрешения, наследуемые от родительских объектов", и нажмите кнопку "Добавить" в диалоговом окне подтверждения.

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

В Windows 8 есть специальная кнопка для отключения наследования:

Разрешения могут быть установлены двумя способами: после отключения наследования вы можете установить их только на текущий раздел, или вы можете задать разрешения для текущего ключа, и затем применить их ко всем его подразделам. Для этого установите флажок Заменить все записи разрешений дочернего объекта наследуемыми от этого объекта . Это действие выставит заданные вами разрешения вниз по иерархии ключей для всех подразделов.

Ключи командной строки Редактора реестра

Переход в нужный раздел реестра одним кликом


Вариант №1

Некоторое время назад я создал утилиту RegOwnershipEx , которая позволяет получить полный доступ к разделу реестра одним кликом. Кроме этого, она позволяет перейти в желаемый раздел реестра. Я рекомендую вам с ней ознакомиться.

RegOwnershipEx позволяет следующее:

  • стать владельцем и получить полный доступ к выбранному разделу реестра. Имеется окно обзора реестра для легкого выбора раздела.
  • избранное - для быстрого доступа к вашим любимым раздела реестра. Оно интегрировано с меню "Избранное" редактора реестра.
  • восстановить права доступа и владельца, которые вы изменили ранее. т.е. программа позволяет вернуть права в исходное состояние.
  • функция "открыть в regedit" - вы можете открыть выбранный ключ в редакторе реестра. Это очень удобная опция, чтобы быстро перейти к разделу, просто скопировав его имя.
  • сокращения для корневых разделов - вы можете использовать HKCU вместо HKEY_CURRENT_USER, HKLM вместо HKEY_LOCAL_MACHINE и так далее.
  • получение пути реестра из буфера обмена Windows.
  • аргумент командной строки "/j" для извлечения пути к разделу реестра из буфера обмена Windows и быстрого перехода в редактор реестра.

Всё это чертовски удобно!

Вариант 2

Я набросал простенький скрипт, который будет получать содержимое буфера обмена, записывает его в реестр и открывает редактор реестра. Предполагается следующий сценарий: Вы читаете статью, в ней написано – «перейдите в раздел реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion». Вы выделяете путь к разделу, нажимаете CTRL+С и запускаете скрипт. Редактор реестра открывается в нужном месте. .

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

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

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

Что такое реестр?

Где его искать?

Как в него войти?

и в конце-концов

Давайте попробуй вместе разобраться в этих вопросах.

Сразу – это не подробная характеристика реестра с подробным описанием каждого параметра. Для этого существуют целые талмуды, как в печатном виде, так и в электронном.

Что такое реестр?

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

Реестр содержит данные, к которым Windows XP постоянно обращается во время загрузки, работы и ее завершения, а именно:

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

Реестр имеет иерархическую древовидную структуру, состоящую из разделов, подразделов и ключей (параметров).

Как в него войти?

Для работы с реестром используется простая и понятная утилита Regedit, знакомая еще со времен Windows 3.1.

Что бы открыть системный реестр вам необходимо проделать следующее: нажать Пуск –> выбрать Выполнить… –> в поле Открыть… введите regedit –> нажмите ОК .

Откроется окно утилиты Regedit с наименованием разделов.

Разделы и подразделы – это, грубо говоря, папки в левом окне Regedit’а. Ключ реестра, или параметр – это некая переменная, которой присвоено определенное значение, проще говоря – это то, что мы видим в правом окне Regedit’а.

Куст (основной раздел, стандартный раздел, в английской документации – улей, от англ. hive) – это раздел реестра, отображаемый как файл на жестком диске.

Куст является набором разделов, подчиненных разделов и параметров и имеет корни на верхнем уровне иерархии реестра. По умолчанию большинство файлов кустов (Default, SAM, Security и System) сохраняются в папке %SystemRoot%\System32\Config (например, C:\Windows\System32\Config\). Папка %SystemRoot%\Profiles содержит профили (настройки) для каждого пользователя компьютера. Поскольку куст представляет собой файл, его можно перемещать из одной системы в другую. Для редактирования этого файла необходимо использовать редактор реестра.

Реестр Windows XP состоит из 5 основных разделов:

HKEY_CLASSES_ROOT

Является подразделом HKEY_LOCAL_MACHINE\Software\Classes. В этой ветви содержатся сведения о расширениях всех зарегистрированных в системе типов файлов (хранящиеся здесь сведения отвечают за запуск необходимой программы при открытии файла с помощью Проводника Windows)

HKEY_CURRENT_USER

Данный раздел содержит настройки текущего активного пользователя, вошедшего в систему. Здесь хранятся папки пользователя, цвета экрана и параметры панели управления. Эти сведения сопоставлены с профилем пользователя. Хотя это раздел выглядит как один из основных в редакторе реестра, он является всего лишь ссылкой на один из профилей HKEY_USERS\.

HKEY_LOCAL_MACHINE

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

HKEY_USERS

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

HKEY_CURRENT_CONFIG

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

Часто для обозначения основных разделов реестра пользуются сокращениями:

HKEY_CLASSES_ROOT – HKCR
HKEY_CURRENT_USER – HKCU
HKEY_LOCAL_MACHINE – HKLM
HKEY_USERS – HKU
HKEY_CURRENT_CONFIG – HKCC

Как изменить нужный параметр?

Нам необходимо проверить значение параметра Shell подраздела Winlogon раздела HKEY_LOCAL_MACHINE .

Параметр Shell в реестре размещен по пути HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Рассмотрим как это необходимо сделать. Проделайте это вместе со мной и вы на практике убедитесь что в этом нет ничего сложного.

Внимание! Перед внесением изменений в реестр целесообразно делать резервную копию всего реестра или той ветки, в которую собираетесь вносить изменения. Для этого в редакторе реестра выполните: Файл –> Экспорт… –> дать имя файлу –> Сохранить. В случаи чего вы всегда сможете восстановить предыдущие параметры реестра, через Файл –> Импорт… Или запустив на исполнение сохраненный вами файл.

Запускаем редактор реестра: Пуск –> выбрать Выполнить… –> в поле Открыть… вводим regedit –> нажимаем ОК .

В редакторе реестра вначале нажимаем на плюсик (или два раза кликаем по папке) возле раздела HKEY_LOCAL_MACHINE , затем на папке SOFTWARE , дальше Microsoft , и так далее, пока не доберемся до нужного нам подраздела Winlogon .

Кликаем на подразделе Winlogon и в правой части окна редактора реестра ищем параметр Shell . Правая часть редактора реестра разделена на три колонки: Имя, Тип, Значение. Вот как раз мы и добрались к тому значению, которое нам необходимо проверить.

В нашем конкретном примере значение параметра Shell должно быть Explorer.exe

Если оно отличается от нужного нам, то вносим изменения. Для этого два раза кликаем левой клавишей мыши по имени Shell (или один раз правой клавишей мыши и из контекстного меню выбираем Изменить ). Откроется окно Изменение строкового параметра , где в строке Значение вносим необходимые нам изменения и нажимаем ОК.

Закрываем редактор реестра.

Вот и все, мы проверили параметр реестра и при необходимости внесли в него изменение.

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

Сегодня мы попробуем залезть в реестр 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 .

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