Реестр Windows

Содержание:

Введение……………………………………………………………………………………………..........3

  1. История системного реестра Windows 4
  1. Редактор реестра  RegEdit.exe 7
  1. Структура системного реестра Windows 9
  1. Типы данных системного реестра Windows 13
  1. Расположение  системного реестра Windows 17
  1. Структура reg-файлов в ОС семейства Windows 22

Заключение……………………………………………………………………………………............25

Библиографический список……………………………………………………………….......26

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Введение

Согласно словарю Microsoft Computer Dictionary, реестр – это иерархически построенная, централизованная база данных в составе операционных систем Microsoft Windows 9x/NT/2000/XP/2003/Vista, содержащая сведения, которые используются операционной системой для работы с пользователями, программными продуктами и устройствами.  
Системный реестр заменяет собой большинство текстовых ini-файлов, которые использовались в Windows 3.x, а также файлы конфигурации MS-DOS (например, Autoexec.bat и Config.sys). 
В нем хранятся данные, которые необходимы для правильного функционирования Windows. К ним относятся:

  • профили всех пользователей
  • сведения об установленном программном обеспечении и типах файлов, которые могут быть созданы каждой программой
  • информация о свойствах папок и значках приложений
  • информация об установленном оборудовании и используемых портах. 
    Во время запуска операционной системы происходит до тысячи обращений к Реестру, а во время работы на ПК в течение одного сеанса работы – до 10 тысяч! 
    Отдельные компоненты Реестра хранятся в оперативной памяти ПК в течение всего сеанса работы. 
    Запись (считывание) информации в Реестр (из Реестра) происходит постоянно: например, если мы устанавливаем какую-нибудь программу, вся информация, необходимая для запуска и работы этой программы, записывается в Реестр. Если мы устанавливаем новое устройство, в Реестре будет отмечено, где находится его драйвер и т.д. Если же мы запускаем какую-либо программу или устройство, то из Реестра считывается вся необходимая для запуска программы (устройства) информация. 
  1. История системного реестра Windows

Первой  операционной системой для персональных  компьютеров от Microsoft была MS DOS. В этой операционной системе было два  основных конфигурационных файла: config.sys и autoexec.bat. Первый содержал инструкции по загрузке драйверов и резидентных программ. В autoexec.bat указывались команды, которые выполнялись при загрузке DOS, например,  устанавливались переменные окружения, вызывались оболочки вроде Norton Commander.

Кроме config.sys и autoexec.bat в MS DOS не было других конфигурационных файлов или реестра. Каждое приложение хранило свои настройки в  отдельном файле, формат и местонахождение которого был известен только ему самому. У одних приложений конфигурационные файлы были текстовыми (их можно было редактировать вручную в текстовом редакторе), у других — двоичными (их можно было редактировать только с помощью самого  приложения, которое "знало" формат файла).  

DOS не  устраивала пользователей своей  однозадачностью и отсутствием  дружественного интерфейса. Различные  разработчики выпускали оболочки  для DOS, облегчающие участь пользователя. Microsoft тоже не осталась в стороне,  разработав оболочку Windows. Первые  версии  Windows вообще не заслуживали внимания. Более или менее удачной стала  только третья версия Windows — Windows 3.0. Она все настройки хранила также в текстовом файле Win.ini – который содержал более 1000 строк. Для хранения  настроек системы использовались INI-файлы, которые, однако, имели массу недостатков. Главным недостатком INI-файлов была, во-первых, плоская структура, в отличие от современного реестра Windows, имеющего  иерархическую структуру. Во-вторых, INI-файлы были текстовыми, что затрудняло хранение в них двоичной информации. С другой стороны, это позволяло  редактировать INI-файлы в любом текстовом редакторе, чего нельзя сделать с современным реестром. Нужно отметить также, что INI-файлы стали  единым форматом для хранения настроек Windows-приложений. Ведь намного проще использовать уже известный формат и готовые API-функции для  работы с ним, чем изобретать велосипед заново, придумывая собственный формат конфигурационных файлов. Некоторые программы до сих пор  используют не реестр, а INI-файлы.

В появлении  и развитии реестра, в том виде, в котором он существует на данный момент, следует разделить «технологический»  и «идеологический» шаги.

Технологический шаг в развитии реестра был сделан в Windows 3.1 (апрель 1992). Здесь впервые появился собственно реестр, как древовидная структура данных. Это был всего один файл, который назывался REG.DAT, хранился в каталоге C:\Windows\, имел только одну ветку HKEY_CLASSES_ROOT. Он служил для связи DDE (Dynamic Data Exchange), для хранения настроек механизма DDE (Dynamic Data Exchange), а позднее OLE (Object Linking and Embedding) . Все  остальные настройки системы по-прежнему хранились в INI-файлах.

Первый реестр имел ограничение на максимальный размер файла REG.DAT —64К. Если вдруг реестр превышал этот размер — то файл реестра (REG.DAT) приходилось удалять и собирать заново, либо из *.REG файлов, либо вводить данные вручную.

Поскольку реестр представлял собой  двоичный файл, то тогда же появилась программа REGEDIT.EXE для его просмотра и редактирования.

Идеологический  шаг был сделан в Windows NT 3.1 (июль 1993). Произошел отказ от файлов 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 (это был тот же RegEdit.exe от Windows 3.1, просто с другой датой), который позволял редактировать все ветки реестра.

Далее технология и идеология (назначение) реестра уже не менялись. Все последующие версии Windows использовали реестр как основную БД, содержащую все основные данные по конфигурации как самой ОС, так и прикладных программ. Версии реестра для разных версий операционных систем семейства Windows имеют определенные различия, связанные с  
расположением и названием файлов реестра, и названием и назначением ключей.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  1. Редактор  реестра RegEdit.exe

Основным  и наиболее известным инструментом администрирования Реестра Windows является утилита Редактор реестра (Registry Editor), входящая в состав любой копии ОС Windows (дисковый адрес утилиты – %windir%\RegEdit.exe).

Утилита имеет небольшой размер: в Windows XP – 133 КБ, в Vista – 131 КБ. Интерфейс Редактора реестра представляет собой обычное окно со строкой заголовка, строкой меню (Файл, Правка, Вид, Избранное, Справка). Рабочее окно Редактора реестра разделено на две части: в левой (Панель разделов) отображаются ветви, разделы и подразделы, в правой (Панель параметров) – параметры выбранного элемента Реестра. По своей сути программа RegEdit мало отличается от файлового менеджера Проводник Windows.

Редактор реестра  можно использовать для выполнения следующих задач:

  • поиск поддерева, раздела, подраздела или параметра;
  • добавление подраздела или параметра;
  • изменение значения параметра;
  • удаление подраздела или параметра;
  • переименование подраздела или параметра.

 

Переходить по иерархической структуре реестра, расположенной в левой части  окна, можно с помощи мыши. При  этом в правой части отображаются свойства каждого из разделов, представленные в роли таблицы, включающей в себя два поля: имя параметра и его  значение. Изменить имя или значение любого параметра можно, дважды щелкнув  мышью на его значке в правой области  окна Редактора реестра.

В нижней области  окна программы находится строка состояния, в которой указывается  путь к выделенному элементу реестра. Например, если в ветви HKEY_CURRENT_USER выбрать ключ AppEvents, в нем — подраздел EventLables и, наконец, в последнем — подраздел Close, то в строке состояния будет показан вот такой путь: Компьютер\HKEY_CURRENT_USER\AppEvents\EventLables\Close.

Основная работа с программой Редактор реестра осуществляется с использованием командной панели, расположенной непосредственно  под панелью заголовка программы. Командная панель содержит пять меню, раскрыть которые можно щелчком  мыши на заголовке меню.

  • Меню Файл. Используется для экспорта-импорта файла реестра и его отдельных элементов. Позволяет передавать содержимое какой-либо части реестра на печать или открывать для редактирования файлы реестра других компьютеров, размещенных в локальной сети.
  • Меню Правка. Предназначено для создания, удаления и переименования логических элементов реестра. Дает возможность искать нужные данные, настраивать параметры безопасности.
  • Меню Вид. Используется для изменения настроек программы.
  • Меню Избранное. Дает возможность указывать закладки для различных разделов и подразделов системного реестра, чтобы иметь возможность быстро к ним перейти.
  • Меню Справка. Как понятно из названия, просто справка по программе.

3. Структура системного  реестра Windows

Реестр Windows XP отличается многоуровневой архитектурой, включающей в себя четыре нисходящих логических компонента: 
 
 
 
 
 
 
 
 
 

К первому компоненту, расположенному в самом верху  иерархии реестра, относятся так  называемые ветви реестра. Эти ветви обозначаются с использованием англоязычной аббревиатуры HKEY_. После символа подчеркивания идет название самой ветви. Всего в реестре Windows XP есть пять основных ветвей.

 

 

 

Коротко остановимся  на каждой из них:

  • HKEY_CLASSES_ROOT (HKCR). Эта ветвь включает в себя информацию о зарегистрированных в системе типах файлов, порядке обработки файлов каждого типа, а также управлении основными настройками интерфейса (то есть содержит настройки ActiveX-объектов).
  • HKEY_CURRENT_USER (HKCU). В этой ветви находятся сведения о пользователе, текущий сеанс работы которого обслуживается реестром. В подразделах этой ветви записаны данные о переменных окружения, группах программ пользователя, настройках рабочего стола и экрана, сетевых соединениях, принтерах и дополнительной конфигурации программ (в Windows XP переменные окружения применяются в сценариях, записях реестра и других программах лишь в роли подстановочных параметров). Эта информация передаются из подраздела Security ID (SID) ветви HKEY_USERS для текущего пользователя. Другими словами, в данной ветви предоставлена вся информация, относящаяся к профилю активного пользователя Windows.
  • HKEY_LOCAL_MACHINE (HKLM). В данной ветви находятся данные об операционной системе и оборудовании, к примеру, тип шины компьютера, объем доступной оперативной памяти, список загруженных в текущий момент времени драйверов устройств, а также информация, связанная с загрузкой Windows. Эта ветвь содержит наибольший объем информации в системном реестре Windows XP и зачастую применяется для тонкой настройки оборудования компьютера. Данные в этой ветви относятся к профилям всех зарегистрированных в системе пользователей.
  • HKEY_USERS (HKU). В этой ветви расположены подразделы с данными о всех профилях пользователей компьютера. Один из ее подразделов всегда связан с подразделом HKEY_CURRENT_USER (через параметр Security ID (SID) пользователя)). В другом подразделе, а именно, подразделе, HKEY_USERS\DEFAULT, представлены данные о параметрах системы в настоящий момент времени, которые были актуальны до начала сеанса работы пользователя, зарегистрированного в системе.
  • HKEY_CURRENT_CONFIG (HKCC). В данной ветви представлены подразделы со сведениями обо всех профилях оборудования, активного в текущем рабочем сеансе. Профили оборудования дают возможность выбирать драйверы поддерживаемых устройств для выбираемого сеанса работы (что позволяет, к примеру, не задействовать активацию порта док-станции переносного компьютера в тот период, когда он не подключен к станции). Данные сведения передаются из подразделов HKEY_LOCAL_MACHlNE\SYSTEM\CurrentControlSet.

Ко второму компоненту в системе иерархии реестра относятся разделы, или ключи реестра (keys).

В Windows XP не существует универсального стандарта для обозначения  ключей реестра, поэтому имена для  них назначались разработчиками согласно типам данных, которые расположены  в ключе. Работать с ключами можно  в программе Редактор реестра (RegEdit), где они отображаются в виде подпапок ветвей HKEY_, как показано рисунке ниже.

Строго говоря, ограничений, которые соотносят  с ключами конкретный тип данных, попросту не существует. Поэтому ключи  в архитектуре реестра используются лишь для того, чтобы упростить  доступ к информации и предоставляют  собой, фактически, просто средством  для упорядочивания больших массивов данных реестра.

По своему функциональному  предназначению ключи реестра разделяются  на две следующие категории:

  • Указываются системой. Имена ключей выбираются ОС, их изменение может сделать Windows XP полностью неработоспособной.
  • Указываются пользователем. Имена ключей может изменять администратор компьютера, и такие модификации не станут причиной каких-либо фатальных проблем.

Ступенькой ниже в структурной иерархии реестра  расположены подразделы реестра (subkeys). Подразделы также прямо не связаны с какими-либо типами данных и не используются в рамках каких-либо соглашений, которые ограничивают присвоение им названий. Наравне с именами ключей, названия подразделов определяются как ОС, так и пользователем, причем в первом случае их модификация может стать причиной проблем в работе Windows, а во втором — нет.

Финальная ступень  в архитектуре системного реестра  называется параметром (values). Это компонент реестра, содержащий непосредственно сами данные, которые обуславливают работу ОС и всего компьютера. Параметры, фактически, являются цепочкой «имя параметра — значение параметра» и различаются по типу содержащейся в качестве их значений информации. 
 
 

    1. Типы  данных системного реестра  Windows

Итак, конечным элементом дерева реестра являются параметры.

Все параметры  реестра имеют фиксированный  тип. В табл.1 приведен полный список используемых типов. Не все из них  используются в разных версиях Windows. Например, REG_QWORD явно предназначен для 64-битной версии XP. Кроме того, сохраняется  преемственность поколений Windows –  в более поздних версиях используются все типы ранних версий. Также следует  учесть, что ряд типов используется только системой в некоторых разделах, и создать свой параметр такого типа с помощью редактора реестра  не получится. 

      Таблица 1

      Типы  параметров

№ п/п Тип данных Описание
Windows 9x
  REG_BINARY Двоичные данные. Большинство сведений об аппаратных компонентах хранится в виде двоичных данных и выводится в редакторе  реестра в шестнадцатеричном  формате. Максимальная длина такого ключа 16Кб.
  REG_DWORD Данные, представленные целым числом (4 байта). Многие параметры  служб и драйверов устройств  имеют этот тип и отображаются в двоичном, шестнадцатеричном или  десятичном форматах
  REG_SZ Текстовая строка фиксированной длины (например, "C:\Windows")
Windows XP
  REG_EXPAND_SZ Строка Unicode переменной длины. Этот тип данных включает переменные, обрабатываемые программой или службой
  REG_MULTI_SZ Многострочный текст Unicode. Этот тип, как правило, имеют  списки и другие записи в формате, удобном для чтения. Записи разделяются  пробелами, запятыми или другими  символами
  REG_DWORD_LITTLE_ENDIAN 32-разрядное  число в формате “остроконечников”  — младший байт хранится первым  в памяти. Эквивалент REG_DWORD
  REG_DWORD_BIG_ENDIAN 32-разрядное  число в формате “тупоконечников”  — старший байт хранится первым  в памяти
  REG_LINK Символическая ссылка Unicode. Только для внутреннего  использования (некоторые корневые разделы являются такой ссылкой  на другие подразделы)
  REG_NONE Параметр не имеет определенного типа данных
Windows XP (только в разделе HKLM\HARDWARE)
  REG_RESOURCE_LIST Список аппаратных ресурсов.
  REG_FULL_RESOURCE_DESCRIPTOR Дескриптор (описатель) аппаратного ресурса.
  REG_RESOURCE_REQUIREMENTS_LIST Список необходимых  аппаратных ресурсов.
Windows Vista
  REG_QWORD 64-разрядное  число
  REG_QWORD_LITTLE_ENDIAN 64-разрядное  число в формате “остроконечников”.  Эквивалент REG_QWORD
 
 

      Ограничения на имена ключей

Имена ключей не могут содержать:

      обратные  слеши (\),

      пробелы ( ),

      звездочки ( * )

      вопросительные  знаки (?).

Имя ключа  не должно совпадать с именами  ключей, располагающихся выше него по иерархии.

Имеется три типа системных элементов  реестра, каждый из которых является корневым и имеет собственную  иерархию:

      TypeLib,

      Interface,

      CLSID.

      1. Иерархия TypeLib идентифицирует положение  инсталлированных в данный момент  библиотек типов, которые являются  базами данных, описывающими содержимое  компонентов OLE. Широко используемая  для поддержки автоматизации  библиотека типов описывает прототипы  функций для всех поддерживаемых  интерфейсов, а также включает  в себя ссылки на файлы-подсказки,  и поэтому инструменты разработки  могут вызвать соответствующую  страницу подсказки и помочь  создателям макрокоманд правильно  воспользоваться серверами автоматизации.

      2. Иерархия Interface содержит список, отсортированный  по идентификаторам интерфейса, всех инсталлированных в системе  интерфейсов. Это дает возможность  прочитать имя интерфейса (IUnknown, IMalloc и т. д.) и подробности о  каждом интерфейсе (количество функций  в каждом интерфейсе и его  базовый класс).

      3. Иерархия CLSID детализирует все инсталлированные  в данный момент (открытые) компоненты OLE. CLSID — это идентификатор класса. CLSID обеспечивает связь между  компонентами. Соединение с конкретным  интерфейсом конкретного компонента  требует сначала идентифицировать  CLSID для доступа к компоненту, а затем IID для получения желаемого интерфейса. Так же, как и идентификаторы интерфейсов (типы данных IID и REFIID), идентификаторы классов (типы данных CLSID и REFCLSID) являются 128-разрядными (16 шестнадцатеричных цифр) числами, обеспечивающими машинный способ точной идентификации класса компонента. Также, как тип IID, CLSID имеет тип GUID:

      typedef struct_GUID

      { DWORD Data1;

      WORD Data2 ;

      WORD Data3;

      BYTE Data4[8];

      }GUID;

Из этих трех типов элементов самым важным является элемент идентификатор  класса, поскольку детали модуля компонента (файл с расширением .DLL или .EXE) хранятся в иерархии CLSID.

Например, следующий элемент реестра делает доступным компонент библиотеки PUBMEM:

      HKEY_CLASSES_ROOT\CLSID\

      {308D0430 – 1090 – 11cf – B92A – 00AA006238F8}\

      InprocServer32 = C:\PETZOLD\CHAP20\PUBMEM.DLL

InprocServer32 означает, что файл, на который  ссылаются, является 32-разрядным  файлом с расширением .DLL. 
 
 
 
 
 
 

    1. Расположение  системного реестра  Windows

Ранее была рассмотрена логическая структура  реестра, но существует ещё и физическая структура, сохраняющая различные  части реестра в отдельных  файлах. Хранение реестров разных версий Windows имеют различия.

В Windows ХР реестр содержится в двух файлах SYSTEM.DAT и USER.DAT, находящиеся в каталоге Windows. В Windows Me был добавлен еще один файл CLASSES.DAT.

В качестве примера  рассмотрим физическую структуру Windows XP.  Элементы реестра хранятся в виде атомарной структуры. Реестр разделяется на составные части, называемые ульями (hives), или кустами. Ульи хранятся на диске в виде файлов (табл.2). Некоторые ульи, такие, как HKLM\HARDWARE, не сохраняются в файлах. Они записываются в память компьютера в процессе его загрузки и удаляются сразу после отключения питания. Такие разделы реестра называются изменяемыми (vola-tile). В практическом плане это значит, что они управляются ОС в рамках одного сеанса, т.е. начиная с момента загрузки Windows и до завершения работы с ней. Примером такого энергозависимого раздела можно считать ветвь HKEY_LOCAL_MACHINE\HARDWARE, в которой расположены данные о подключенном к компьютеру оборудовании и назначенных различным устройствам ресурсах. К таким ресурсам относятся, в частности, запросы на прерывание (IRQ), каналы прямого доступа к памяти (DMA) и диапазоны ввода-вывода (I/O Range).

Поскольку такие  операции, как опрос, инициализация  устройств и динамическое распределение  ресурсов осуществляются непосредственно  в ходе загрузки Windows XP, все данные такого типа содержатся в памяти компьютера, поскольку следующем запуске  системы комплект оборудования может  оказаться совсем иным.

Другие компоненты реестра, содержащие данные об основной конфигурации ОС, ее настройках и параметрах, расположены в папке %systemroot%\System32\Config.

Файлы, которые  хранят данные о профилях пользователей Windows XP, расположены в папке %systemroot%\Profiles.

Что же касается данных, связанных с индивидуальными  настройками системы для каждого  пользователя, а также об их персональной конфигурации среды Windows, они хранятся в папках %Drive%\Documents and Settings\%UserName%, где %Drive% — имя раздела диска, на котором установлена Windows XP. В свою очередь, a %UserName% — папка, в качестве названия которой используется имя зарегистрированного в системе пользователя.

Дополнительная  информация о локальных пользователях Windows по умолчанию предоставлена  в папке %Drive%\Documents and Settings\LocalService, а сведения о настройках системы для удаленных пользователей — в папке %Drive%\Documents and Settings\NetworkService.

При запуске  системы реестр собирается из ульев в единую древовидную структуру с корневыми разделами. 
 
 
 
 
 
 
 
 

Таблица 2

Ульи  реестра

Улей Расположение
HKLM\SYSTEM %SystemRoot%\system32\config\system
HKLM\SAM %SystemRoot%\system32\config\SAM
HKLM\SECURITY %SystemRoot%\system32\config\SECURITY
HKLM\SOFTWARE %SystemRoot%\system32\config\software
HKLM\HARDWARE Изменяемый  улей
HKLM\SYSTEM\Clone Изменяемый  улей
HKU\<SID_пользователя> %USERPROFILE%\ntuser.dat
HKU\<SID_пользователя>_Classes %USERPROFILE%\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
HKU\.DEFAULT %SystemRoot%\system32\config\default
 

Кроме этих файлов, есть ряд вспомогательных, со следующими расширениями:

ALT —  резервная копия улья HKLM\SYSTEM для  Windows 2000 (отсутствует в XP).

LOG —  журнал транзакций, в котором  регистрируются все изменения  реестра.

Реестр Windows