

Исследование системного реестра операционной системы Windows
Цель работы: Ознакомиться с назначением и организацией системного реестра OS Windows, изучить средства для архивирования, просмотра и корректировки реестра.
2
ОБЩИЕ СВЕДЕНИЯ О РЕЕСТРЕOSWINDOWS
Реестр играет ключевую роль в конфигурировании и управлении Windows. Это хранилище общесистемных и пользовательских параметров. Реестр НЕявляетсястатичной совокупностью хранящихся на жестком диске данных, как думают многие. Он представляет собой окно в мир различных структур, которые хранятся в памяти компьютера и поддерживаются ядром и исполнительной системой.
Как правило, следует избегать прямого редактирования реестра — приложения и система, хранящие в реестре параметры, которые могут потребовать настройки вручную, должны предоставлять соответствующий пользовательский интерфейс (UI) для их модификации. В OSWindows включен ряд утилит, позволяющих просматривать и модифицировать реестр.
Windows 2000 поставляется с двумя утилитами для редактирования реестра — Regedit.exe и Regedt32.exe, — тогда как в операционных системах, начиная с Windows ХР имеется лишь Regedit.exe. Причина в том, что версия Regedit в Windows 2000 была перенесена из Windows 98 и поэтому не поддерживала редактирование или просмотр параметров защиты и типов данных, не определенных в Windows 98. Поэтому в Windows 2000 была добавлена Regedt32, которая не обладала развитыми средствами поиска и поддержки импорта/экспорта, но поддерживала параметры защиты и специфичные для Windows 2000 типы данных. Regedit, поставляемая с Windows ХР(7, 8 и т.д.), распознает все типы данных в реестре и позволяет редактировать параметры защиты, ввиду чего необходимость в Regedt32 отпала.
Существует также целый ряд утилит для работы с реестром из командной строки. Например, Reg.exe, включенная в Windows ХР и Windows Server 2003 и доступная в Windows 2000 Support Tools, дает возможность импортировать, экспортировать, создавать резервные копии и восстанавливать разделы реестра, а также сравнивать, модифицировать и удалять разделы и параметры.
ИСПОЛЬЗОВАНИЕРЕЕСТРА
Конфигурационные данные всегда считываются в следующих случаях:
•В ходе загрузки система читает параметры, указывающие, какие драйверы устройств нужно загрузить, а различные подсистемы (вроде диспетчера памяти и диспетчера процессов) — параметры, позволяющие им настраивать себя и поведение системы.
•При входе Explorer и другие Windows-компоненты считывают из реестра предпочтения данного пользователя, в том числе буквы подключенных сетевых дисков, размещение ярлыков, а также настройки рабочего стола, меню и др.
•При запуске приложения считывают общесистемные параметры, например список дополнительных установленных компонентов, информацию о лицензировании, настройки для данного пользователя (меню, размещение панелей инструментов, список недавно открывавшихся документов и т. д.). Однако чтение реестра возможно и в другие моменты, скажем, в ответ на модификацию его параметра или раздела. Некоторые приложения ведут мониторинг своих конфигурационных параметров в реестре и считывают обновленные значения, как только обнаруживают изменения. Но в целом, если система простаивает,
Only for UIB groups from Dobrynin I.S.

3
работы с реестром не должно быть. Реестр обычно модифицируется в следующих ситуациях.
•Исходная структура реестра и многие настройки по умолчанию определяются его прототипной версией, поставляемой на дистрибутиве Windows и копируемой при установке новой системы.
•Программы установки различных приложений создают для них настройки по умолчанию и настройки, отражающие выбор пользователя в процессе установки.
•При установке драйвера устройства подсистема Plug and Play создает разделы и параметры в реестре, которые сообщают диспетчеру ввода-вывода, как запускать драйвер, а также создает другие параметры, определяющие работу этого драйвера.
•Когда вы изменяете параметры приложения или системы через UI, эти изменения часто сохраняются в реестре.
ПРИМЕЧАНИЕнекоторые приложения периодически опрашивают реестр на предмет изменений, тогда как делать это следует через функцию RegNotifyCbangeKey, которая отправляет поток в сон до тех пор, пока в интересующей его части реестра не произойдет какое-нибудь изменение.
ТИПЫ ДАННЫХ В РЕЕСТРЕ
Реестр — это база данных, структура которой аналогична структуре логического тома. Он содержит:
разделы (keys), напоминающие дисковые каталоги, и параметры (values), которые можно сравнить с файлами на диске.
Only for UIB groups from Dobrynin I.S.

4
Раздел представляет собой контейнер, содержащий другие разделы, называемые подразделами (subkeys), и/или параметры. Параметры хранят собственно данные. Разделы верхнего уровня называются корневыми. Здесь мы будем использовать термины «подраздел» и «раздел» как синонимы (лишь корневые разделы не могут быть подразделами).
Соглашение об именовании разделов и параметров заимствовано из файловой системы. Таким образом, параметру можно присвоить имя, которое сохраняется в каком-либо разделе. Исключением из этой схемы является безымянный параметр, присутствующий в каждом разделе. Утилиты реестра, Regedit и Regedt32, по-разному показывают этот параметр:
Regedit обозначает его как (Default) [(По умолчанию)], Regedt32 — как <NoName>(<БЕЗИМЕНИ>).
Only for UIB groups from Dobrynin I.S.

5
Описаниесоставляющихпанелипараметровпредставленониже.
В параметрах хранятся данные 15 типов, перечисленных в т аблице 1. Большинство параметров реестра имеет тип REG_DWORD, REGBINARY или R EG_SZ. Параметры типа REGDWORD содержат числов ые или булевы значения, параметры ти па REGBINARY — данные, требующие более 32 битов, или произвольные двоичные данные (на пример зашифрованные пароли), а параметры типа REG_SZ — строки (естественно, в Unicode-формате), которые могут представлять такие элементы, как имена, пути, типы и имена файлов.
Таблица 1. Типы параметро в реестра(красным отмечено большинст во параметров реестра)
|
Тип параметра |
|
Описание |
|
|
|
|
|
|
|
REG_NONE |
|
Нетипизированный параметр |
|
|
|
|
|
|
|
REG_SZ |
|
Unicode-строка фиксированной длины |
|
|
|
|
|
|
|
|
|
Unicode-строка переменной длины; может включать |
|
|
REG_EXPAND_S2 |
|
||
|
|
переменные окружения |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
REG_BINARY |
|
Двоичные данные произвольной длины |
|
|
|
|
|
|
|
REG_DWORD |
|
32-битное число |
|
|
|
|
|
|
|
REG_DWORD_LITTLE_ENDIAN |
|
32-битное число, в котором первым является младший |
|
|
|
байт; эквивалентно REG_DWORD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
REG_DWORD_BIG_ ENDIAN |
|
32-битное число, в котором первым является старший |
|
|
|
|
|
|
|
|
|
|
|
|
REG_LINK |
|
Символьная ссылка в формате Unicode |
|
|
|
|
|
|
|
REG_MULTI_SZ |
|
Массив Unicode-строк с завершающим нулем |
|
|
|
|
|
|
|
REG_RESOURCE_LIST |
|
Описание аппаратного ресурса |
|
|
|
|
|
|
|
|
|
Only fo r UIB groups from Dobrynin I.S. |

6
REG_FULL_RESOURCE_DESCRI PTOR |
Описание аппаратного ресурса |
||||||
REG_RESOURCE_REQUIREMENTS_LIS |
Список требований к ресурсам |
||||||
T |
|
|
|
||||
REG_QWORD |
|
64-битное число |
|||||
REG_QWORD_LITTLE_ENDIAN |
64-битное число, в котором первым является младший |
||||||
байт; эквивалентно REG_QWOR D |
|||||||
|
|
|
|
||||
|
|
|
|
|
|
|
|
REG_QWORD_BIG_ENDIAN |
64-битное число, в котором первым является |
||||||
старший байт |
|||||||
|
|
|
|
||||
|
|
|
|
|
|
|
|
Описание основных типов параметров реестра представлено ниже. |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Only fo r UIB groups from Dobrynin I.S.

7
ЛОГИЧЕСКАЯСТРУКТУРАРЕЕСТРА
Вы можете проследить схему организации реестра через данные, которые в нем хранятся. Существует пять корневых разделов (добавлять или удалять корневые разделы нельзя), описанных в таблице2.
Таблица 2. Корневые разделы реестра
Корневой раздел |
|
Описание |
|
|
|
|
|
|
|||
HKEY_CURRENT_USER |
Содержит данные, сопоставленные |
с пользователем, |
|||
который вошел в систему на данный момент |
|||||
|
|||||
|
|
|
|
||
HKEY_USERS |
Хранит |
информацию обо всех |
учетных записях на |
||
компьютере |
|
|
|||
|
|
|
|||
|
|
|
|
|
|
HKEY_CLASSES_ROOT |
Хранит |
сопоставления файлов |
и |
регистрационную |
|
информацию СОМ-объектов |
|
|
|||
|
|
|
|||
|
|
||||
HKEY_LOCAL_MACHINE |
Содержит информацию, специфичную для системы |
||||
|
|
||||
|
Включает некоторые сведения о текущем профиле |
||||
HKEY_CURRENT_CONFIG |
оборудования |
|
|
||
|
|
|
|
|
Windows интенсивно использует ссылки в реестре: три из шести корневых разделов реестра представляют собой ссылки на подразделы трех корневых разделов, которые ссылками не являются. Ссылки не записываются на диск, а создаются динамически при
каждой загрузке системы.
Почему имена корневых разделов начинаются с буквы «Н»? Дело в том, что имена корневых разделов представляют Windows-описатели (Handles) разделов (KEY). HKLM является аббревиатурой HKEY_LOCAL_MACHINE. В таблице 3 приводится список всех корневых разделов и их аббревиатур.
Only for UIB groups from Dobrynin I.S.

8
Таблица 3. Предназначение корневых разделов реестра
Корневой раздел |
С |
окращение |
Описание |
|
Ссылка |
|||||
|
|
|
Ссылается |
на |
про филь |
На |
подраздел в |
|||
HKEY_CURRENT_ USER |
|
HKCU |
пользователя, |
вошедшего |
в |
HKEY_USERS, |
||||
|
систему |
|
|
|
|
соответствующий |
||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
текущему |
||
|
|
|
|
|
|
|
|
|||
|
|
|
Содержит подразделы для |
Не |
является |
|||||
HKEY_USERS |
|
HKU |
всех загруженных |
профилей |
ссылкой |
|||||
|
|
|
пользователей |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
Содержит |
сведения |
о |
HKLM\SOFTWARE\ |
||||
HKEY_ CLASSES _ROOT |
|
HKCR |
сопоставлениях |
файлов |
и |
Classes |
||||
|
регистрационную |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
||
|
|
|
информацию СОМ-объект ов |
|
|
|
|
|||
HKEY_LOCAL_ MACHINE |
|
HKLM |
Контейнер, |
содержа щий |
Не |
является |
||||
|
другие разделы |
|
|
|
ссылкой |
|||||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||
HKEY_CURRENT _CONFIG |
|
HKCC |
Текущий |
|
про филь |
HKLM\SYSTEM\ |
||||
|
оборудования |
|
|
|
|
CurrentControlSet |
||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Only fo r UIB groups from Dobrynin I.S.

9
HKEY_CURRENT_USER
Корневой раздел HKCU содержит данные о предпочтениях и конфигурации программного обеспечения для локально зарегистрированного пользователя. Этот раздел ссылается на профиль текущего пользователя, находящийся на жестком диске в файле \Documents and Settings\<имя_пользователя>\ Ntuser.dat. При каждой загрузке профиля пользователя (например, при регистрации в системе или при выполнении сервисного процесса в увязке с именем какого-либо пользователя) HKCU создается как ссылка на подраздел соответствующего пользователя в HKEY_USERS. Некоторые подразделы HKCU перечислены в таблице 4.
Таблица 4. Подразделы в HKEY_CURRENT_USER
Подраздел |
Описание |
|
|
AppEvents |
Сопоставления звуковых сигналов с событиями |
|
|
Console |
Параметры окна командной строки (ширина, высота, цвет и т. д.) |
|
|
|
Текущая экранная заставка, оформление рабочего стола, параметры |
Control Panel |
клавиатуры и мыши, настройки специальных возможностей, а также |
|
язык и региональные стандарты |
Environment |
Определения переменных окружения |
Keyboard Layout |
Раскладки клавиатуры |
Network |
Имена и параметры подключенных сетевых дисков |
Printers |
Параметры подключения принтеров |
Software |
Настройки программ, специфичные для пользователя |
|
|
Программные группы |
Группы главного меню, специфичные для пользователя |
Информация о |
Данные о состоянии файлов для систем, обновляемых с Windows Зх до |
переходе с Windows |
Windows 2000 и выше |
3.1 |
|
|
|
HKEY_USERS
HKU содержит подраздел для каждого загруженного профиля пользователя, регистрационную базу данных классов и подраздел HKU\.DEFAULT, связанный с профилем для системы (этот профиль предназначен для процессов, выполняемых под локальной системной учетной записью). Данный профиль используется Winlogon, например, чтобы изменения в параметрах фона рабочего стола были реализованы на экране входа. Если пользователь входит в систему в первый раз и если его учетная запись не зависит от доменного профиля роуминга (т. е. профиль пользователя извлекается из централизованного хранилища в сети по указанию контроллера домена), система создает профиль для его учетной записи на основе профиля, хранящегося в каталоге C:\Documents and Set-tings\Default User.
Каталог, где система хранит профили, определяется параметром реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\ProfilesDirectory, который
Only for UIB groups from Dobrynin I.S.

10
по умолчанию устанавливается в %SystemDrive%\Documents and Settings. Раздел ProfileList также хранит список профилей, имеющихся в системе. Информация по каждому профилю помещается в подраздел, имя которого отражает SID учетной записи, соответствующей данному профилю. Информация в разделе профиля включает время последней загрузки этого профиля (параметры ProfileLoadTimeLow и ProfileLoadTimeHigh), двоичное представление SID учетной записи (параметр Sid) и путь к кусту профиля на диске в каталоге ProfilelmagePath. Windows и Windows Server 2003 показывают список профилей в диалоговом окне управления профилями пользователей, которое представлено на рисунке. Чтобы открыть это окно, запустите апплет System (Система) из Control Panel (Панель управления), перейдите на вкладку Advanced (Дополнительно) и в разделе User Profiles (Профили пользователей) щелкните кнопку Settings (Параметры).
HKEY_CLASSES_ROOT
HKCR включает информацию двух типов: сопоставления расширений файлов и регистрационные данные СОМ-классов. Для каждого зарегистрированного типа файлов существует свой раздел. Большинство разделов содержит параметры типа REG_SZ, ссылающиеся на другие разделы HKCR, где находится информация о сопоставлениях классов файлов. Например, HKCR\.xls ссылается на сведения о файлах Microsoft Excel в разделе HKCU\Excel.Sheet.8 (последняя цифра указывает на версию Microsoft Excel). Другие разделы содержат детальную информацию о конфигурации СОМ-объектов, зарегистрированных в системе.
Раздел HKEY_CLASSES_ROOT формируется на основе:
•специфичных для конкретного пользователя регистрационных данных классов в HKCU\SOFTWARE\Classes (хранятся в \Documents and Settings\<имя_пользователя>\Local Setings\Application Data\Microsoft\Windows\Usrclass.dat);
Only for UIB groups from Dobrynin I.S.