Реестр Windows (), или системный реестр — иерархически построенная база данных параметров и настроек в операционных системах Microsoft Windows.
Реестр представляет собой структурированное хранилище данных и настроек, используемых для настройки оборудования и программного обеспечения, управления профилями пользователей и предопределенными настройками, в котором фиксируется большинство изменений, внесённых в панель управления, ассоциации файлов, системные политики и списки установленного программного обеспечения.
Редактор реестра имеет формат файла .reg который вносит разные изменение в Реестр 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) 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. Хотя этот раздел выглядит как один из основных в редакторе реестра, он является всего лишь ссылкой на один из профилей HKEY_USERS\.
HKEY_USERS Раздел HKEY_USERS (сокращённо HKU) содержит информацию о профилях всех пользователей данного компьютера. Этот корневой раздел связан с HKEY_CURRENT_USER, который фактически является ссылкой подраздела корневого раздела HKEY_USERS, хранящего сведения о текущем пользователе.
HKEY_LOCAL_MACHINE Раздел содержит параметры конфигурации, относящиеся к данному компьютеру (для всех пользователей). Вместо полного имени раздела иногда используется аббревиатура HKLM.
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.
HKEY_CURRENT_CONFIG Данный раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы. Является ссылкой на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current
HKEY_DYN_DATA Данный раздел имеется только в реестре ОС семейства Windows 9x. Содержит динамически изменяемые данные о компьютере (загрузка процессора, размер файла подкачки и т. п.).
Критика Способ хранения параметров и настроек операционной системы при помощи реестра Windows часто подвергается критике по следующим причинам: Реестр хранится в небольшом количестве объёмных (по нескольку сотен мегабайт) файлов, вследствие чего высока вероятность повреждения данных. Также большие файлы подвержены фрагментации, что замедляет доступ к реестру на обычных жёстких дисках (твердотельные накопители решают эту проблему). В связи с тем, что, помимо настроек, в реестре хранится различная информация системы и приложений (например, многие приложения хранят в реестре список недавно открытых ов), размер реестра значительно увеличивается по мере использования операционной системы. Эта проблема частично решается при помощи специальных утилит. Не все настройки системы хранятся в реестре, соответственно, перенос настроек системы путём копирования реестра невозможен. Некоторые программы не могут работать без параметров, занесённых в реестр, что создаёт трудности при переносе их с компьютера на компьютер, или теряют данные после переустановки операционной системы.