Реестр Windows (англ. Windows Registry), или системный реестр — иерархически построенная база данных параметров и настроек в операционных системах Microsoft Windows.
Реестр представляет собой структурированное хранилище данных и настроек, используемых для настройки оборудования и программного обеспечения, управления профилями пользователей и предопределенными настройками, в котором фиксируется большинство изменений, внесённых в панель управления, ассоциации файлов, системные политики и списки установленного программного обеспечения.
Реестр Windows был создан с целью систематизации информации, ранее размещённой во многих файлах с расширением INI, введение которого в реестр позволило создать единый механизм доступа (API) для записи и чтения настроек, а также устранить проблемы, связанные с короткими именами файлов, отсутствием дифференциации параметров, правами доступа и низкой производительностью при работе с файловой системой FAT16. Эта система, имеющая ограничения при поиске файлов в больших каталогах, в конечном итоге уступила место более эффективной файловой системе NTFS, что привело к исчезновению первоначальных причин использования реестра. Однако реестр по-прежнему важен благодаря поддержке обратной совместимости и остаётся неотъемлемой частью всех версий операционной системы Windows, включая последнюю.
Microsoft Windows, а также альтернативные операционные системы, такие как ReactOS и eComStation, остаются единственными системами, которые продолжают применять механизм реестра для управления настройками операционной системы.
История возникновения и развития реестра
Реестр Windows 3.1
Сам реестр как древовидная иерархическая база данных (registration database — регистрационная база) впервые появился в Windows 3.1 (апрель 1992). Это был всего один двоичный файл, который назывался REG.DAT и хранился в каталоге C:\Windows\. Реестр Windows 3.1 имел только одну ветку HKEY_CLASSES_ROOT. Он служил для связи DDE, а позднее и OLE-объектов.
Одновременно c появлением реестра в Windows 3.1 появилась программа REGEDIT.EXE для просмотра и редактирования реестра.
Первый реестр уже имел возможность импорта данных из *.REG-файлов. В базовой поставке шёл файл SETUP.REG, содержащий данные по основным расширениям и типам файлов.
Реестр Windows 3.1 имел ограничение на максимальный размер файла REG.DAT — 64 Кбайт. Если реестр превышал этот размер, файл реестра (REG.DAT) приходилось удалять и собирать заново либо из *.REG-файлов либо вводить данные вручную.
Реестр Windows NT 3.1
Следующий шаг был сделан в Windows NT 3.1 (июль 1993). Произошёл отказ от устаревших файлов MS-DOS: AUTOEXEC.BAT и CONFIG.SYS, а также от INI-файлов как от основных файлов конфигурации. На «регистрационную базу» (реестр) была переведена вся конфигурация системы. Основой конфигурации системы стал реестр. Он имел 4 корневых раздела: HKEY_ LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT и HKEY_USERS.
Реестр стал «сборным»: на диске он хранился в файлах: DEFAULT, SOFTWARE, SYSTEM, а при запуске системы из этих файлов собиралась единая БД.
В комплекте поставки оставался файл REGEDIT.EXE, который по-прежнему позволял просматривать и редактировать только ветку HKEY_CLASSES_ROOT, и появился файл REGEDT32.EXE, который редактировал все ветки реестра.
Далее технология и назначение реестра уже не менялись. Все последующие версии Windows начиная с NT 3.5 использовали реестр как основную БД, содержащую все основные данные по конфигурации как самой ОС, так и прикладных программ. Далее менялись названия файлов реестра и их расположение, а также название и назначение ключей.
Файлы реестра (Хранение данных реестра)
Windows 95/98
- User.dat
- System.dat
Windows ME
- Classes.dat
- User.dat
Windows 2000
В Windows 2000 количество кустов реестра осталось таким же, как и в Windows NT 5.0.
5 кустов, один из которых является ссылкой на раздел в HKEY_USERS. Сам куст называется HKEY_CURRENT_USER
Windows XP
в Windows XP файлы реестра хранятся в следующих местах:
- 03= Ветка реестра «HKEY_LOCAL_MACHINE\SYSTEM» формируется из файла «%SystemRoot%\System32\config\SYSTEM»
- 04= Ветка реестра «HKEY_LOCAL_MACHINE\SOFTWARE» формируется из файла «%SystemRoot%\System32\config\SOFTWARE»
- 05= Ветка реестра «HKEY_LOCAL_MACHINE\SECURITY» формируется из файла «%SystemRoot%\System32\config\SECURITY»
- 06= Ветка реестра «HKEY_LOCAL_MACHINE\SAM» формируется из файла «%SystemRoot%\System32\config\SAM»
- 07= Ветка реестра «HKEY_USERS\.DEFAULT» формируется из файла «%SystemRoot%\System32\config\DEFAULT»
- 09= Ветка реестра «HKEY_USERS\S-1-5-19» формируется из файла «%SystemDrive%\Documents and Settings\LocalService\NTUSER.DAT»
- 10= Ветка реестра «HKEY_USERS\S-1-5-20» формируется из файла «%SystemDrive%\Documents and Settings\NetworkService\NTUSER.DAT»
- 11= Ветка реестра «HKEY_USERS\<SID_пользователя>» формируется из файла «%SystemDrive%\Documents and Settings\<Папка пользователя>\NTUSER.DAT»
- 12= Ветка реестра «HKEY_USERS\<SID_пользователя>_Classes» формируется из файла «%SystemDrive%\Documents and Settings\<Папка пользователя>\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat»
Windows Vista
В Windows Vista файлы реестра хранятся там же, где и в Windows XP.
Windows 7
В Windows 7, согласно сведениям из HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist, файлы реестра хранятся в следующих местах:
- 01= Ветка реестра «HKEY_LOCAL_MACHINE\HARDWARE» формируется в зависимости от оборудования (динамически);
- 02= Ветка реестра «HKEY_LOCAL_MACHINE\BCD00000000» формируется из файла «%SystemRoot%\Boot\BCD»
- 03= Ветка реестра «HKEY_LOCAL_MACHINE\SYSTEM» формируется из файла «%SystemRoot%\System32\config\SYSTEM»
- 04= Ветка реестра «HKEY_LOCAL_MACHINE\SOFTWARE» формируется из файла «%SystemRoot%\System32\config\SOFTWARE»
- 05= Ветка реестра «HKEY_LOCAL_MACHINE\SECURITY» формируется из файла «%SystemRoot%\System32\config\SECURITY»
- 06= Ветка реестра «HKEY_LOCAL_MACHINE\SAM» формируется из файла «%SystemRoot%\System32\config\SAM»
- 07= Ветка реестра «HKEY_USERS\.DEFAULT» формируется из файла «%SystemRoot%\System32\config\DEFAULT»
- 08= Ветка реестра «HKEY_USERS\S-1-5-18» формируется из файла «%SystemRoot%\System32\config\systemprofile\NTUSER.DAT» (относится к учётной записи system)[1]
- 09= Ветка реестра «HKEY_USERS\S-1-5-19» формируется из файла «%SystemRoot%\ServiceProfiles\LocalService\NTUSER.DAT» (относится к учётной записи LocalService)
- 10= Ветка реестра «HKEY_USERS\S-1-5-20» формируется из файла «%SystemRoot%\ServiceProfiles\NetworkService\NTUSER.DAT» (относится к учётной записи NetworkService)
- 11= Ветка реестра «HKEY_USERS\<SID_пользователя>» формируется из файла «%USERPROFILE%\NTUSER.DAT», где под %USERPROFILE% подразумевается путь к папке соответствующего пользователя.
- 12= Ветка реестра «HKEY_USERS\<SID_пользователя>_Classes» формируется из файла «%USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat»
Резервные копии файлов реестра DEFAULT, SAM, SECURITY, SOFTWARE и SYSTEM находятся в папке «%SystemRoot%\System32\config\RegBack». Само резервное копирование производится силами Планировщика задач в 0 ч. 00 мин. каждые 10 дней по заданию «RegIdleBackup», расположенному в иерархии задач по пути «\Microsoft\Windows\Registry».
Ветка реестра «HKEY_CURRENT_USER» формируется из файла «%USERPROFILE%\NTUSER.DAT», где под %USERPROFILE% подразумевается путь к папке текущего пользователя.
Реестр 64-разрядных версий Windows XP и Windows Server 2003 и Windows Vista подразделяется на 32- и 64-разрядные разделы. Большинство 32-разрядных разделов имеет те же имена, что и их аналоги в 64-разрядном разделе, и наоборот. По умолчанию редактор реестра 64-разрядных версий Windows XP, Windows Server 2003 и Windows Vista отображает 32-разрядные разделы в узле HKEY_LOCAL_MACHINE\Software\WOW6432Node.
Описание разделов реестров
HKEY_CURRENT_USER
Данный раздел содержит настройки текущего активного пользователя, вошедшего в систему. Здесь хранятся папки пользователя, цвета экрана и параметры панели управления. Эти сведения сопоставлены с профилем пользователя. Вместо полного имени раздела иногда используется аббревиатура HKCU[2]. Хотя этот раздел выглядит как один из основных в редакторе реестра, он является всего лишь ссылкой на один из профилей HKEY_USERS\.
HKEY_USERS
Раздел HKEY_USERS (псевдоним HKU) содержит информацию о профилях всех пользователей данного компьютера. Данный раздел практически никогда не используется пользователями. Следует отметить связь данного корневого раздела с разделом HKEY_CURRENT_USER, который фактически является ссылкой подраздела корневого раздела HKEY_USERS, хранящего сведения о текущем пользователе.
HKEY_LOCAL_MACHINE
Раздел содержит параметры конфигурации, относящиеся к данному компьютеру (для всех пользователей). Вместо полного имени раздела иногда используется аббревиатура HKLM[2].
HKEY_CLASSES_ROOT
Является подразделом HKEY_LOCAL_MACHINE\Software\Classes. В основном, содержит информацию о зарегистрированных типах файлов и объектах COM и ActiveX. Вместо полного имени раздела иногда используется аббревиатура HKCR. Начиная с Windows 2000 эти сведения хранятся как в LOCAL_MACHINE, так и в CURRENT_USER. Раздел HKLM\Software\Classes содержит параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Параметры, содержащиеся в разделе HKCU\Software\Classes, относятся только к текущему пользователю, имея приоритет над стандартными. Раздел CLASSES_ROOT включает в себя данные из обоих источников. Кроме того, раздел CLASSES_ROOT предоставляет объединённые данные программам, написанным под ранние версии Windows. Изменения настроек текущего пользователя выполняются в разделе HKCU\Software\Classes. Модификация параметров по умолчанию должна производиться в разделе HKLM\Software\Classes. Данные из разделов, добавленных в CLASSES_ROOT, будут сохранены системой в разделе HKLM\Software\Classes. Если изменяется параметр в одном из подразделов раздела CLASSES_ROOT и такой подраздел уже существует в HKCU\Software\Classes, то для хранения информации будет использован раздел HKCU\Software\Classes, а не аналогичный раздел в LOCAL_MACHINE[2].
HKEY_CURRENT_CONFIG
Данный раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы[2]. Является ссылкой на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current
HKEY_DYN_DATA
Данный раздел имеется только в реестре ОС семейства Windows 9x/ME. Содержит динамически изменяемые данные о компьютере (загрузка процессора, размер файла подкачки и т. п.)[2].
Критика
Способ хранения параметров и настроек операционной системы при помощи реестра Windows часто подвергается критике по следующим причинам:
- Реестр хранится в небольшом количестве объёмных (по нескольку сотен мегабайт) файлов, вследствие чего высока вероятность повреждения данных. Также большие файлы подвержены фрагментации, что замедляет доступ к реестру на обычных жёстких дисках (твердотельные накопители решают эту проблему).
- В связи с тем, что, помимо настроек, в реестре хранится различная информация системы и приложений (например, многие приложения хранят в реестре список недавно открытых файлов), размер реестра значительно увеличивается по мере использования операционной системы. Эта проблема частично решается при помощи специальных утилит.
- Не все настройки системы хранятся в реестре, соответственно, перенос настроек системы путём копирования реестра невозможен.
- Некоторые программы не могут работать без параметров, занесённых в реестр, что создаёт трудности при переносе их с компьютера на компьютер, или теряют данные после переустановки операционной системы.
- Реестр очень похож на виртуальную файловую систему, работающую поверх реальной файловой системы. При этом, как для файловой системы, реестр очень неустойчив к сбоям. Фактически один неверный байт в файле куста (ветки реестра, подобие корневому каталогу в файловых системах) приводит к сбою при попытке загрузки куста, и (для системных кустов) отказу операционной системы. Надёжность такого реестра никогда не будет выше надёжности файловой системы, на которой расположены его файлы. Однако версии Windows начиная с NT используют логи транзакций в качестве средства защиты от повреждений при обновлении реестра. Текущие версии Windows используют логи двух уровней для того, чтобы обеспечить целостность реестра в случае отказа питания или других подобных событий во время обновления реестра[3]. Даже в случае ошибки, из-за которой невозможно восстановить реестр, Windows может починить и инициализировать повреждённые записи реестра во время загрузки системы[3].
Критики приводят в пример UNIX-подобные операционные системы, где нет реестра и выполняемые им задачи решаются другими средствами.
Терминология
В описании реестра в английской литературе, среди прочих, используется термин Hive (куст в официальной документации Microsoft)[2][4]
Куст реестра — это подмножество разделов, подразделов и параметров реестра, которому сопоставлен набор вспомогательных файлов, содержащих резервные копии этих данных[2].
Примечания
- ↑ Хорошо известные идентификаторы безопасности в операционных системах Windows . Дата обращения: 14 мая 2011. Архивировано 4 марта 2015 года.
- ↑ 1 2 3 4 5 6 7 Сведения о реестре Windows для опытных пользователей . Дата обращения: 27 октября 2007. Архивировано 13 октября 2007 года.
- ↑ 1 2 Ionescu, Mark Russinovich, David A. Solomon, Alex. Registry Internals // Windows internals (неопр.). — 6th ed.. — Redmond, Wash.: Microsoft Press[англ.]. — ISBN 978-0-7356-4873-9.
- ↑ Windows registry information for advanced users . Дата обращения: 27 октября 2007. Архивировано 16 мая 2008 года.
Ссылки
- Описание реестра Microsoft Windows (рус.)
- Как создавать, изменять или удалять подразделы и значения системного реестра с помощью файла записей регистрации (.reg) (англ.)
- MSDN — структура реестра, программирование реестра (англ.)
- Описание ключей реестра на официальном сайте TechNet (англ.)
- Описание известных идентификаторов безопасности в операционных системах Windows (рус.)
You must be logged in to post a comment.