Категории: ОСиСофт

Реестр и работа с ним

Для начала определимся с терминологией.  Реестр — это прежде всего основа работы операционной системы, огромная база данных настроек, хранящихся в папках %SystemRoot%\System32\Config и файле пользовательских профилей (Ntuser.dat). Без реестра Windows была бы просто набором программ, неспособных выполнить даже простейшие функции ОС.

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

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

Системный реестр заменяет собой большинство текстовых ini-файлов, которые использовались в Windows 3.x, а также файлы конфигурации MS-DOS (например, Autoexec.bat и Config.sys).

Версии реестра для разных версий операционных систем семейства Windows имеют определенные различия.

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

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

Разобраться в реестре — задание не из легких, но это необходимо, если Вы желаете узнать ОС полностью, в большинстве случаев мало кто даже подозревает о существовании реестра. Для работы с реестром в ОС Windows встроена простая и понятная утилита Regedit.exe. Для запуска утилиты Редактор реестра: нажмите Пуск –> Выполнить… –> в поле Открыть: введите regedit –> OK.

Разделы и подразделы — это папки в левом окне regedit. Ключ реестра или параметр — это переменная, которой присвоено определённое значение, это то, что мы видим в правом окне regedit.

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

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

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

  1. HKEY_CURRENT_USER (HKCU)
    Данный раздел является корневым для данных настройки пользователя, вошедшего в систему в настоящий момент. Здесь хранятся папки пользователя, цвета экрана и настройки панели управления. Эти данные называются профилем пользователя.
  2. HKEY_USERS (HKU)
    Данный раздел содержит все профили пользователей компьютера. HKEY_CURRENT_USER является подразделом HKEY_USERS. В него данные помещаются при каждом входе («логине») пользователя.
  3. HKEY_LOCAL_MACHINE (HKLM)
    Раздел содержит данные настройки, относящиеся к данному компьютеру (для всех пользователей).
  4. HKEY_CLASSES_ROOT (HKLM)
    Данный раздел является подразделом HKEY_LOCAL_MACHINE\Software. Хранящиеся здесь сведения обеспечивают открытие необходимой программы при открытии файла с помощью проводника. По сути, этот подраздел привязывает используемые программами расширения файлов, переменные, значения к самим программам за счет регистрации типов и классов.
  5. HKEY_CURRENT_CONFIG (HKCC)
    Данный раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы

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

Три части параметра реестра всегда располагаются в определенном порядке: Имя, Тип данных, значение ([RegistrySizeLimit] [REG_DWORD] [0x8000000]).

REG_BINARY
Необработанные двоичные данные. Большинство сведений об аппаратных компонентах хранится в виде двоичных данных и выводится в редакторе реестра в шестнадцатеричном формате.

REG_DWORD 
Данные, представленные целым числом (4 байта, 32 бита). Многие параметры служб и драйверов устройств имеют этот тип и отображаются в двоичном, шестнадцатеричном или десятичном форматах.

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

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

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

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

Хранение реестра

Элементы реестра хранятся в виде атомарной структуры. Реестр разделяется на составные части, называемые ульями (hives), или кустами. Ульи хранятся на диске в виде файлов. Некоторые ульи, такие, как HKLM\HARDWARE, не сохраняются в файлах, а создаются при каждой загрузке, то есть являются изменяемыми. При запуске системы реестр собирается из ульев в единую древовидную структуру с корневыми разделами. Перечислим ульи реестра и их местоположение на диске (для NT старше версии 4.0).

  • HKLM\SYSTEM
    %SystemRoot%\system32\config\system
  • HKLM\SAM
    %SystemRoot%\system32\config\SAM
  • HKLM\SECURITY
    %SystemRoot%\system32\config\SECURITY
  • HKLM\SOFTWARE
    %SystemRoot%\system32\config\software
  • HKLM\HARDWARE
    Изменяемый улей
  • HKLM\SYSTEM\Clone
    Изменяемый улей
  • HKU\<SID_пользователя>
    %USERPROFILE%\ntuser.dat
  • HKU\<SID_пользователя>_Classes
    %USERPROFILE%\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
  • HKU\.DEFAULT
    %SystemRoot%\system32\config\default

Кроме этих файлов, есть ряд вспомогательных, со следующими расширениями:

  • LOG — журнал транзакций, в котором регистрируются все изменения реестра.
  • SAV — копии ульев в том виде, в котором они были после завершения текстовой фазы установки.

Реестр является настоящей базой данных, поэтому в нем используется технология восстановления, похожая на ту, что используется в файловой системе NTFS. Уже упомянутые LOG-файлы содержат журнал транзакций, который хранит все изменения. Благодаря этому реализуется атомарность реестра — то есть в данный момент времени в реестре могут быть либо старые значения, либо новые, даже после сбоя. Промежуточного (незавершенного) значения быть не может. Как видим, в отличие от NTFS, здесь обеспечивается сохранность не только структуры реестра, но и данных. К тому же, реестр поддерживает такие параметры NTFS, как управление избирательным доступом и аудит событий — система безопасности пронизывает всю NT .

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

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

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

При серьезном повреждении реестра операционную систему загрузить невозможно. Поэтому вирусы зачастую стараются испортить реестр или заблокировать доступ к Реестру пользователя, чтобы затруднить обнаружение и удаление вируса из автозагрузки. Серьезные разрушения файлов реестра или вообще их потеря (при выходе из строя винчестера) вызовет при загрузке компьютера так называемый BSOD (Blue Screen Of Death или синий экран смерти), который указывает на то, что работа Windows далее невозможна и ошибка настолько серьезна, что Windows не может решить возникшую проблему своими средствами. В таких случаях реестр приходится восстанавливать из резервных копий, созданных либо Windows в процессе работы, либо вручную при резервном копировании. Если резервная копия реестра слишком стара, то восстановление такой копии приведет к неработоспособности многих программ, которые устанавливались после создания копии реестра, притом, что файлы самой программы будут присутствовать на жестком диске. Как правило, восстановление реестра при серьезном сбое даже из старой архивной копии сэкономит гораздо больше времени, чем переустановка Windows и всех программ при отсутствии резервной копии реестра вообще.

Утилиты для работы с реестром

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

Продолжение статьи

[Посещений: 1 119, из них сегодня: 1]

Свежие посты

Процессы зомби, демоны и сироты в Linux

Процессы и программы Программа в Unix — это последовательность исполняемых инструкций на диске. Вы можете…

12 октября 2024

Изучаем сертификаты, приватные ключи и keystore

Существует большое разнообразие форматов, в которых создаются сертификаты и приватные ключи для них. Часто они…

20 июля 2024

Восстановление доступа к Docker Hub

Все известно, что Докерхаб закрыл доступ для пользователей из санкционных стран, включая РФ и РБ.…

30 мая 2024

Как посмотреть сертификат хоста через командную строку

Зачастую бывает необходимо проверить, а какой SSL сертификат отдает тот или иной хост на определенном…

21 февраля 2024

Использование choco через прокси

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

21 февраля 2024

Обзор SSD диска XrayDisk

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

3 декабря 2023