Что это такое
Первоначально в Windows вместо реестра использовались *.ini файлы, но при работе с ними возникало много проблем — ограничения размеров, отсутствие стандартного формата, медленный доступ, отсутствие поддержки сети и т.д. В Windows 3.1 (именно Windows, а не Windows NT) уже существовал реестр, который хранился в reg.dat и мог быть просмотрен, используя regedit.exe. Он использовался для интеграции DDE, OLE и File Manager. В Windows NT реестр — сердце NT, в котором хранится почти вся информация, разделенная на несколько подразделов, каждый из которых начинается с HKEY_.
Каждый раздел может иметь несколько подразделов, а каждый подраздел может иметь несколько собственных подразделов . Каждый раздел/подраздел может иметь несколько значений, состоящих из трех частей:
Имя параметра, например Wallpaper
Тип параметра, например REG_SZ (текстовая строка)
Фактическое значение параметра, например "c:\winnt\winfaq.bmp" Редактировать реестр можно с помощью двух инструментов: regedt32.exe и regedit.exe. Regedit.exe обладает лучшими средствами поиска, но не поддерживает все типы парметров Windows NT. Если Вы хотите просто посмотреть, что из себя представляет реестр, выполните следующее:
- Откройте редактор реестра (regedit.exe или regedt32.exe)
- В Regedt32.exe Вы можете установить на реестр режим "только чтение", что не позволит Вам в нем что-нибудь сломать :-) (Options — Read Only Mode)
- Выделите подраздел HKEY_USERS .
- Перейдите в .default — Control Panel — Desktop и Вы увидите множество параметров в правой части панели.
- Один из них — обои (это фон, который отображается до Вашего входа в систему).
Из каких файлов состоит реестр и где они находятся?
Файлы, составляющие реестр, хранятся в папке %systemroot%/system32/config и состоят из:
- SAM — HKEY_LOCAL_MACHINE\SAM
- SECURITY — HKEY_LOCAL_MACHINE\Security
- software — HKEY_LOCAL_MACHINE\Software
- system — HKEY_LOCAL_MACHINE\System & HKEY_CURRENT_CONFIG
- default — HKEY_USERS\.DEFAULT
- Ntuser.dat — HKEY_CURRENT_USER (этот файл хранится в %SystemRoot%\Profiles\%username%).
Также имеются файлы с другими расширениями:
- .alt — Содержит резервную копию раздела HKEY_LOCAL_MACHINE\System. Только у System есть .alt файлы.
- .log — Файл регистрации изменений значений параметров в разделе.
- .sav — Копия раздела, создаваемая в конце text mode stage установки.
Какие есть клавиши управления в редакторе реестра Regedit?Комбинация клавиш | Действие |
---|
стрелка, направленная вниз | Переход к следующему разделу, отображенному на экране |
стрелка, направленная вверх | Переход к предыдущему разделу, отображенному на экране |
стрелка, направленная влево | Раскрытие выделенного раздела |
стрелка, направленная вправо | Свертывание раскрытого раздела или переход к разделу на уровень выше |
Alt+Home | Переход к значку Мой компьютер |
Alt+Home+стрелка влево | Переход к значку Мой компьютер и свертывание всех ветвей |
Tab | Переход между левой и правой панелью Редактора реестра |
F1 | Вызов справки |
F2 | Переименование выделенного раздела |
F3 | Открытие окна Поиск или вызов команды Найти далее |
Alt+F4 | Закрытие Редактора реестра |
F5 | Обновление содержимого панелей Редактора реестра |
F6 | Переход между левой и правой панелью Редактора реестра |
F10 | Переход к меню управления |
Shift+F10 | Открытие \ закрытие контекстного меню |
Любой символ | Переход к следующему доступному подразделу, чье название начинается с выбранного символа |
Как ограничить доступ к редакторам реестра?
Воспользуйтесь редактором реестра (regedt32.exe).
- Выделите HKEY_USERS и затем, Load Hive из меню Registry.
- Перейдите в папку с Profile пользователя, которому Вы хотите ограничить доступ к редакторам реестра, и выберите NTUser.dat.
- После вывода подсказки для ввода Key Name, введите его UserID.
- Перейдите в \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies.
- Если не существует параметра System, нажмите Add Key.
- Потом Add Value и введите: DisableRegistryTools (в System key). Тип REG_DWORD, значение установите в 1.
- Unload Hive из меню Registry.
Каков максимальный размер реестра?
Максимальный размер реестра — 102MB, но тем не менее, это можно изменить.
Максимальный размер реестра контролируется параметром HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ RegistrySizeLimit. По умолчанию его не существует, поэтому необходимо его создать:
- Откройте редактор реестра (regedit.exe)
- Перейдите в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control
- Из меню Edit выберите New, тип Dword. Введите имя RegistrySizeLimit
- Двойным щелчком откройте новый параметр и введите значение в байтах (выберите десятичный тип исчислений)
Минимальное размер — 4MB, и даже если фактически меньше, значение будет принудительно увеличено до 4MB. Максимальный размер — 80% от "paged pool" (если его максимальный размер 128MB, следовательно, 102MB — это 80% от 128MB). Когда значение не установлено, то максимальный размер ограничен 25% от "paged pool". "Paged pool" — область физической памяти, используемая для данных системы, которые могут быть перемещены из оперативной памяти на винчестер во время их простоя.
Важно знать, что RegistrySizeLimit — это максимум, а не выделение. И установка более высокого значения не резервирует свободное пространство и не гарантирует достижения такого размера. Это можно сделать, воспользовавшись апплетом System в Control Panel. Нажмите вкладку Performance и установите максимальный размер реестра. Перезагрузитесь.
Есть и другие проблемы: в начале загрузки NTLDR загружает некий программный код, распределяет рабочую память и читает части реестра. Все это должно быть загружено в первые 16MB памяти, независимо от того, сколько ее у Вас установлено. Считываемые системные файлы загружаются в память полностью, независимо от того, на сколько они используются :(
Некоторые другие проблемы:
Реестр содержит много пустого пространства (иногда очень много). Попробуйте сохранить SYSTEM key из REGEDT32 и сравните с тем что хранится в \%systemroot%\system32\config\
Создание LastKnownGood ControlSet (обычно #2) после загрузки почти удваивает размер файла. В зависимости от обстоятельств, добавление в реестр может потребовать создания нового пустого пространства, которое добавляется к объединенным разделам Current и LastKnownGood SYSTEM. Далее, после очередной перезагрузки, еще один LastKnownGood добавляется в реестр, что утраивает первоначальный размер и грозит крахом системы.
Способы избавления от вышеописанной проблемы:
- На FAT просто загрузитесь с загрузочной дискеты DOS и замените файл SYSTEM.
- На NTFS загрузитесь с другого NT раздела и замените файл SYSTEM.
- Используйте утилиту REGBACK /REGREST из NT reskit (самый легкий способ).
- Выполните RDISK, перезагрузитесь и восстановите систему. Используете только RDISK /s. При этом сохраняется и база данных пользователей.
- Воспользуйтесь ERD Commander (Winternals Software)
- Предотвратить данную проблему можно. Используя REGEDT32, вставьте параметр "ReportBootOk:REG_SZ:0" [ноль] в HKEY_Local_Machine \ SOFTWARE \ Microsoft \ WindowsNT \ CurrentVersion \ Winlogon. Это предотвратит создание LastKnownGood ControlSet. Если ошибки при загрузке вызваны превышением 16MB при работе NTLDR, то dump не производится и MS не сможет решить эту проблему. Проблема 16 MB не решена и в NT5.