Домой / Основные настройки / Значения системного реестра. Изменить поведение компьютера при выключении. Создание своего окна при входе в систему

Значения системного реестра. Изменить поведение компьютера при выключении. Создание своего окна при входе в систему


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

Реестр Windows, что это?

Реестр, системный реестр, реестр Windows – это огромная и в то же время основная иерархическая база данных операционных систем семейства Windows, впервые появившаяся в далеком 1992-м году в Windows 3.1. Он представляет собой несколько хранящихся в системных каталогах файлов, таких как ServiceProfiles, %USERPROFILE%, System32config. Он возник как замена ini-файлам, в которых до этого хранилась конфигурация системы. Это значительно увеличило скорость доступа к системным данным.

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

Зачем чистить реестр и оптимизировать его?

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

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

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

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

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

Как запустить программу для работы с реестром?

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

Как открыть реестр Windows? 1-й способ
  • Вызываем диалоговое окно «Выполнить» посредством комбинации «Win + R».
  • Пишем «regedit» в текстовую форму и кликаем «Ок».
  • 2-й способ
  • Вызываем «Пуск» и вписываем команду запуска редактора реестра «regedit» в поисковую строку.
  • В результатах поиска кликаем по «regedit.exe» для запуска системной утилиты.
  • Работаем с записями системного реестра посредством стандартного редактора реестра

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

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

    Пользователю доступны следующие возможности по работе с системным реестром:

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

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

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

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

    Создание резервное копии раздела или ветки:

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

    Задаем путь и имя выходящего файла.


    Если у Вас остались вопросы по теме «
    Что такое реестр и как с ним работать?», то можете задать их в комментариях

    Как создать учетную запись Apple id на iPhone, iPad или iPod touch?

    В первую очередь откройте App Store, iTunes Store или iBooks и выберите любую бесплатную программу. Теперь ряд с выбранным объектом нажмите GET. Затем нажмите ее еще раз, чтобы загрузить объект. Нажимаем «Создать новый Apple ID». Следуйте дальнейшим инструкциям. Нажмите «Нет», когда вас попросят указать платежные реквизиты. После ввода информации вас попросят подтвердить ваш идентификатор Apple ID по электронной почте. Перед использованием идентификатора Apple ID нужно сначала подтвердить его.

    • Return to the previous step
    • Restart the F.A.Q
    • Спросить

    Спасибо! Мы постараемся ответить в ближайшее время


    if(function_exists("the_ratings")) { the_ratings(); } ?>

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