Помощь в написании студенческих работ
Антистрессовый сервис

Архитектура системного реестра Windows

РефератПомощь в написанииУзнать стоимостьмоей работы

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

Архитектура системного реестра Windows (реферат, курсовая, диплом, контрольная)

АРХИТЕКТУРА СИСТЕМНОГО РЕЕСТРА WINDOWS

1.ТИПЫ ДАННЫХ Конечным элементом дерева реестра являются ключи или параметры.

Все параметры реестра имеют фиксированный тип. В табл.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 (только в разделе HKLMHARDWARE)

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_ROOTCLSID

{308D0430 — 1090 — 11cf — B92A — 00AA006238F8}

InprocServer32 = C: PETZOLDCHAP20PUBMEM. DLL

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

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

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

В Windows XP элементы реестра хранятся в виде атомарной структуры. Реестр разделяется на составные части, называемые ульями (hives), или кустами. Ульи хранятся на диске в виде файлов (табл.2). Некоторые ульи, такие, как HKLMHARDWARE, не сохраняются в файлах, а создаются при каждой загрузке, то есть являются изменяемыми (vola-tile). При запуске системы реестр собирается из ульев в единую древовидную структуру с корневыми разделами.

Таблица 2

Ульи реестра

Улей

Расположение

HKLMSYSTEM

%SystemRoot%system32configsystem

HKLMSAM

%SystemRoot%system32configSAM

HKLMSECURITY

%SystemRoot%system32configSECURITY

HKLMSOFTWARE

%SystemRoot%system32configsoftware

HKLMHARDWARE

Изменяемый улей

HKLMSYSTEMClone

Изменяемый улей

HKU

%USERPROFILE%ntuser.dat

HKU_Classes

%USERPROFILE%Local SettingsApplication DataMicrosoftWindowsUsrClass. dat

HKU.DEFAULT

%SystemRoot%system32configdefault

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

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

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

SAV — копии ульев в том виде, в котором они были после завершения текстовой фазы установки.

Пользователи Windows 98 могут провести параллель между файлами с расширением .sav и файлом System.1st.

На рис. 1 показаны взаимосвязи между кустами реестра и соответствующими им файлами. На рисунке показан каталог %SYSTEMROOT%System32Config, в котором содержатся файлы кустов с настройками для компьютера. Из рис. 1 видно, что Windows сохраняет содержание подраздела HKLMSOFTWARE в файле куста, который называется Software.

Рис. 1. Взаимосвязи между кустами реестра и соответствующими им файлами

3. ФАЙЛ РЕЕСТРА Знание реестра Windows будет не полным без умения написать reg-файл. Начнем с того, что это такое. Reg-файл — это файл, имеющий определенную структуру и содержащий информацию, которая может быть импортирована в реестр. Если была заблокирована работа с редактором реестра, то наиболее легким способом подредактировать реестр будет создание и импортирование reg-файла.

К reg-файлам предъявляются определенные требования по структуре. Начнем с того, что в первой строке файла обязательно должно быть введено (для Windows ХР) REGEDIT4 или (для Windows 2000/XP) Windows Registry Editor Version 5.00.

Обратите внимание на то, что буквы должны быть большие. Кроме этого в первой строке ничего быть не должно. После этого текста ОБЯЗАТЕЛЬНО должна быть пустая строка.

Затем, указывается раздел реестра, в котором надо прописать или изменить какие-то параметры. Название раздела должно быть заключено в квадратные скобки […]. Ниже прописываются параметры, которые надо добавить, по одному параметру в строке. Если надо провести изменения в нескольких разделах, то должны оставлять одну пустую строку между последним параметром предыдущего раздела и названием следующего раздела. Может немного запутанно, но вот как это должно выглядеть:

REGEDIT4

[Razdel1]

" param1″ ="znachenie1″

" param2″ ="znachenei2″

" param3″ ="znachenie3″

[Razdel2]

" param1″ ="znachenie1

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

Windows 2000/XP обладает обратной совместимостью и может обрабатывать файлы, созданные в Windows 9x. Но если вы экспортировали файл в Windows XP и перенесли его на Windows 9x, то вручную измените первую строчку на REGEDIT4

Теперь пару слов о параметрах, которые можно добавлять. Как вы, наверное, обратили внимание, в приведенном выше примере добавляются параметры с помощью строк типа «param1» ="znachenie1″. Т. е. таким образом добавляется СТРОКОВЫЙ параметр с именем «param1» и значением «znachenie1». Но ведь существуют еще и параметры двоичные и DWORD. Формат записи для их добавления несколько другой. Для параметров типа DWORD используется строка

" param" =dword:XXXXXXXX

Здесь «param» — имя параметра, dword — указывает на тип этого параметра (буквы должны быть обязательно маленькие!) и после двоеточия следует значение из восьми цифр в шестнадцатеричном (!) формате. Однако большинство параметров DWORD имеют значение либо 0, либо 1, значит, вы должны написать соответственно либо 0, либо 1 вместо значков ХХХХХХХХ. Пробелы в строке не допускаются.

Для добавления двоичного параметра формат записи несколько иной:

" param" =hex:XX, XX, XX,…

Теперь расшифруем эту строку. С названием параметра все ясно, после знака «=» идет hex, т. е. указывается, что это будет двоичный параметр, затем идут шестнадцатеричные числа, отделенные запятой. Например, если надо добавить двоичный параметр равный «be 00 00 00», то пишется строка

" param" =hex:be, 00,00,00

В реестре существуют параметры «По умолчанию» («Default»). Чтобы присвоить им какое-то значение через reg-файл, надо добавить такую строку:

@="znachenie"

Здесь значок @ показывает, что у нас присваивается значение параметра «По умолчанию». Обратите внимание на то, что он не заключается в кавычки.

Теперь приведу пример простенького reg-файла, который прописывает в реестр сайт, устанавливающий домашнюю страничку в Internet Explorer’e:

REGEDIT4

[HKEY_CURRENT_USERSoftware MicrosoftInternet ExplorerMain]

" Start Page" = «http://winchanger.narod.ru/»

Удаление параметров С помощью reg-файлов можно не только устанавливать новые параметры, но и удалять их. Например, для удаления раздела из реестра надо перед его именем в квадратных скобках поставить символ «-». Вот как это выглядит:

[-HKEY_LOCAL_MACHINESoftwareQuickSoftQuickStart]

Благодаря этой записи, подраздел «QuickStart» из раздела «QuickSoft» будет удален со всем содержимым.

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

REGEDIT4

[HKEY_CURRENT_USERSoftware]

" xxx" = -;

Параметры командной строки Редактор реестра можно запускать с некоторыми ключами

/s (импортирует значения из reg-файла без вывода диалогового окна)

/e (экспортирует параметры в reg-файл. Пример: regedit /e myfile. reg HKEY_USERS.DEFAULT

Показать весь текст
Заполнить форму текущей работой