Стиль этой статьи неэнциклопедичен или нарушает нормы литературного русского языка. |
Реестр 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, NT 3.51, 95, NT 4.0, 98, 2000, ME, XP, Vista, 7, 8, 8.1, 10, 11) использовали реестр как основную БД, содержащую все основные данные по конфигурации как самой ОС, так и прикладных программ. Далее менялись названия файлов реестра и их расположение, а также название и назначение ключей.
Современный реестр Windows
правитьРеестр в том виде, как его использует Windows и как видит его пользователь в процессе использования программ работы с реестром, формируется из различных данных. Чтобы получилось то, что видит пользователь, редактируя реестр, происходит следующее.
Вначале в процессе установки настройки Windows на диске формируются файлы, в которых хранится часть данных, относящихся к конфигурации системы.
Затем в процессе каждой загрузки системы, а также в процессе каждого входа и выхода каждого из пользователей формируется виртуальная сущность, называемая «реестром», — объект REGISTRY\. Данные для формирования «реестра» частично берутся из тех самых файлов (Software, System …), частично из информации, собранной ntdetect при загрузке (HKLM\Hardware\Description). То есть часть данных реестра хранится в файлах, а часть данных формируется в процессе загрузки Windows.
Для редактирования, просмотра и изучения реестра стандартными средствами Windows (программы regedit.exe и regedt32.exe) доступны именно ветки реестра. После редактирования реестра и/или внесения в него изменений эти изменения сразу записываются в файлы. Однако есть программы сторонних разработчиков, которые позволяют работать непосредственно с файлами.
Программы оптимизации реестра, твикеры, а также инсталляторы и деинсталляторы программ работают через специальные функции работы с реестром.
Файлы реестра (Хранение данных реестра)
править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-подобные операционные системы, где нет реестра и выполняемые им задачи решаются другими средствами.
Программы для работы с реестром
править- WinTools.net
- glary utilites
- regedit.exe
- regedt32.exe
- Reg Organizer
- Test-Run by BB
- CCleaner
- Ashampoo WinOptimizer
- Wise Reg Cleaner
- AuslogicsBoostSpeed
- TuneUp Utilities
- Jv16 PowerTools
- chntpw
Лжеоптимизаторы и дефрагментаторы реестра
правитьСуществуют недобросовестные рекламируемые программы, обещающие в числе прочего оптимизацию работы реестра. Они могут использоваться как для получения прибыли от продажи по необоснованно высокой цене, так и для распространения вирусов. Такие программы даже в теории не работают, поскольку дефрагментировать большие файлы реестра, которые к тому же являются системными, бесполезно.
Терминология
правитьВ описании реестра в английской литературе, среди прочих, используется термин Hive. В некоторых работах его переводят на русский как «дерево». Microsoft в своих документах переводит это как куст. Например:
Registry hive HKEY_LOCAL_MACHINE\SAM == Куст реестра HKEY_LOCAL_MACHINE\SAM[2][4]
Древо (куст) реестра — это подмножество разделов, подразделов и параметров реестра, которому сопоставлен набор вспомогательных файлов, содержащих резервные копии этих данных[2]. 0 - функция включена 1 - функция включена только для загрузки системы 2 - функция включена во время работы, но отключена при загрузки системы 3 - функция включена во всех режимах
Примечания
править- ↑ Хорошо известные идентификаторы безопасности в операционных системах 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 (рус.)
- Интересное о реестре Windows, 15 июня 2009 (статья из ComputerBild)
- Как создавать, изменять или удалять подразделы и значения системного реестра с помощью файла записей регистрации (.reg) (англ.)
- MSDN — структура реестра, программирование реестра (англ.)
- Описание ключей реестра на официальном сайте TechNet (англ.)
- Описание известных идентификаторов безопасности в операционных системах Windows (рус.)
В статье не хватает ссылок на источники (см. рекомендации по поиску). |