|
Продолжение. Начало см. здесь
КустыКак уже говорилось ранее, компонент исполнительной системы, который и реализует сам реестр операционных систем Windows, располагается на диске не одним файлом, а в виде набора нескольких файлов, которые называются кустами (в некоторой документации вы можете увидеть название «улей», что является синонимом. Сам термин hive переводится как «куст» или «улей»). В каждом кусте размещена группа разделов, называемая деревом реестра, где начальная точка дерева имеет название корня, под которым уже находятся прочие подразделы с их параметрами. Причем, корень дерева реестра не стоит путать с корневыми разделами, так как это разные вещи. Диспетчером конфигурации (исполнительная система, реализующая реестр) определяются пути с полными именами файлов всех кустов на локальных компьютерах. Вспомогательные файлы для всех кустов за исключением HKEY_CURRENT_USER в операционных системах Windows находятся в папке %SystemRoot%\System32\Config. Во время загрузки операционной системы диспетчер конфигурации в разделе HKLM\SYSTEM\CurrentControlSet\Control\Hivelist определяет путь к каждому из существующих кусов и удаляет пути к кустам, выгруженным из памяти. Затем, для формирования привычной древовидной структуры системного реестра, диспетчер конфигурации создает корневые разделы реестра и связывает друг с другом существующие кусты. Как вы увидите немного ниже, кусты HKEY_LOCAL_MACHINE\HARDWARE и HKLM\SYSTEM\Clone (который вы сможете найти только в Windows 2000) являются изменяемыми и не имеют сопоставимых файлов, то есть такие кусты существуют временно и операционная система манипулирует ими только в памяти. Все кусты реестров с их местоположениями указаны в следующей таблице: Путь к кусту в системном реестре | Путь к файлу самого куста | HKEY_LOCAL_MACHINE\BCD00000000 | \Boot\BCD | HKEY_LOCAL_MACHINE\COMPONENTS | %SystemRoot%\System32\Config\Components | HKEY_LOCAL_MACHINE\SYSTEM | %SystemRoot%\System32\Config\System | HKEY_LOCAL_MACHINE\SAM | %SystemRoot%\System32\Config\Sam | HKEY_LOCAL_MACHINE\SECURITY | %SystemRoot%\System32\Config\Security | HKEY_LOCAL_MACHINE\SOFTWARE | %SystemRoot%\System32\Config\Software | HKEY_LOCAL_MACHINE\HARDWARE | Изменяемый куст (Volatile hive) | HKEY_USERS\ | %SystemRoot%\ServiceProfiles\LocalService\Ntuser.dat | HKEY_USERS\ | %SystemRoot%\ServiceProfiles\NetworkService\NtUser.dat | HKEY_USERS\ | \Users\\Ntuser.dat | HKEY_USERS\_Classes | \Users\\AppData\Local\Microsoft\Windows\Usrclass.dat | HKEY_USERS\.DEFAULT | %SystemRoot%\System32\Config\Default |
Таблица 1. Файлы, соответствующие кустам реестра Для того чтобы в самом начале загрузки операционной системы, пока еще нет поддержки виртуальной памяти библиотека системного ядра Ntldr.dll могла считывать все кусты (например, HKLM\SYSTEM) в физическую память, Windows ограничивает размеры кустов реестра. В отличие от операционных систем Windows XP и Windows Server 2003, где лимит на размер куста составлял 200 МБ или до четверти физической памяти, установленной в системе, начиная с операционных систем Windows Vista и Windows Server 2008 размер увеличен до 400 МБ или половины физической памяти, установленной в системе (в операционной системе Windows 2000 размер куста не мог превышать 12 МБ). В 64-разрядных операционных системах предельным размером куста является 1,5 ГБ. Общий размер загружаемых данных реестра ограничен в связи с тем, что для хранения кустов реестра операционная система использует пул подкачиваемой памяти, который определяется диспетчером памяти при инициализации на основании многих факторов. Причем, данные системного реестра не могут занимать более 80% этого пула. В связи с установленными операционной системой лимитами на размер кустов реестра, количество одновременно входящих пользователей в операционную систему Windows при помощи служб терминалов может быть ограничено, так как каждый профиль пользователя увеличивает размер загруженных кустов. Для того чтобы избежать перерасхода виртуальной памяти для кустов реестра, в 32-разрядных версиях операционной системы Windows, диспетчер конфигурации использует не пул подкачиваемой памяти, а функции проецирования в системную память, предоставляемые диспетчером памяти, что позволяет проецироваться только тем частям кустов реестра, к которым происходят обращения только в данный момент. При помощи этого, ограничений на общий размер реестра нет, и общий размер загруженных кустов не сказывается на масштабируемости служб терминалов. В 64-разрядных системах в связи с тем, что виртуальное адресное пространство довольно велико, вместо пула подкачиваемой памяти используются дополнительные требования проецирования в системную память. Специфическим типом разделов является символьная ссылка, позволяющая диспетчеру конфигурации связывать кусты для организации реестра. Символьная ссылка – это раздел, который переадресует диспетчер конфигурации к другому разделу. Если вкратце рассмотреть структуру кустов системного реестра, то кусты делятся диспетчером конфигурации на несколько логических единиц, размером по 4096 байт, которые называются блоками, кратно размеру которых, увеличивается и сам размер куста. Первый блок куста, который включает в себя глобальную информацию о самом кусте, а также сигнатуру, идентифицирующую файл как куст, порядковые номера, номер версии формата, внутреннее имя файла куста, метку времени последней записи в куст, а также контрольную сумму, называется базовым. Данные, содержащиеся в кусте реестра, упорядочиваются при помощи специальных контейнеров, которые называются ячейками. В этих ячейках могут храниться разделы, параметры, список подразделов, дескриптор защиты или список параметров раздела. При присоединении ячеек к кусту, сам куст увеличивается и для этого операционная система создает такой блок, который называется приемником, размер которого равен размеру самой ячейки. На следующей иллюстрации вы увидите схематическое изображение внутренней структуры куста реестра:
Рис.1. Структура куста реестра Изменение данных реестраНа данный момент существует множество приложений (включая программное обеспечение сторонних разработчиков), которые предназначены для внесения изменений системного реестра. Для редактирования реестра программа должна использовать функции, с которыми, возможно, вы уже знакомы по утилите Process Monitor (такие функции как RegCreateKeyEx, RegQueryValueEx, RegSetValueEx и RegDeleteKeyEx). К основным средствам, предназначенным для редактирования реестра, относятся редактор реестра, групповые политики, файлы реестра, утилита командной строки REG, а также сценарии, написанные на языках сценариев VBScript или JScript, которые будут вкратце рассмотрены в следующих подразделах. Редактор реестраУтилита «Редактор реестра» (Regedit.exe) – это средство, которое, по меньшей мере, хотя бы один раз открывал каждый пользователь операционных систем Windows. Редактор реестра предназначен для просмотра и редактирования разделов и параметров реестра, поддерживает настройку параметров безопасности, позволяет восстанавливать реестр из резервной копии, а также сохранять и загружать файлы куста. Помимо этого, при помощи данного средства вы можете управлять системным реестром компьютеров, расположенных в вашей сети. Для того чтобы открыть данную утилиту, достаточно в диалоговом окне «Выполнить» ввести Regedit.exe. Редактор реестра имеет удобный пользовательский интерфейс, где слева, в области переходов, вы можете увидеть набор разделов реестра локального или удаленного компьютера, которые отображаются в виде папок, а справа, в области сведений вы можете найти параметры, которые входят в состав выбранного вами раздела. При просмотре системного реестра удаленного компьютера для вас будут доступны только два корневых раздела - HKEY_USERS и HKEY_LOCAL_MACHINE. Несмотря на то, что редактор реестра позволяет изменять большинство параметров, изменения стоит вносить очень осторожно, так как неправильное изменение параметров может привести к серьезным неисправностям. На следующей иллюстрации вы можете увидеть редактор реестра.
Рис. 2. Окно «Редактор реестра» Групповые политикиГрупповые политики – это компонент операционной системы, позволяющий управлять большинством конфигурационных параметров пользователей и компьютеров. Основана групповая политика на конкретных параметрах политики, которые обычно называются политиками, определяющими определенную настройку для применения. В большинстве случаев, этими политиками можно управлять непосредственно из оснастки «Редактор локальной групповой политики» на локальных компьютерах или компьютерах, расположенных в рабочей группе, а в доменной среде для управления конфигурацией групповых политик применяется оснастка «Управление групповой политикой». В данной оснастке, в узле «Административные шаблоны», политики конфигурации пользователя модифицируют значения параметров реестра в разделе HKEY_CURRENT_USER, а политики конфигурации компьютера – в разделе HKEY_LOCAL_MACHINE. Сам по себе, административный шаблон является текстовым файлом, указывающим на изменение конкретных параметров системного реестра, а также генерирующий пользовательский интерфейс для настройки параметра административных шаблонов непосредственно в оснастке редактора групповых политик. В большинстве случаев, административные шаблоны, предназначенные для конфигурации компьютера, модифицируют значения параметров в разделах HKLM\Software\Policies и HKLM\Software\Microsoft\Windows\CurrentVersion\Policies, а административные шаблоны конфигурации пользователя - HKCU\Software\Policies и HKCU\Software\Microsoft\Windows\CurrentVersion\Policies. При необходимости, помимо предустановленных административных шаблонов вы можете добавлять новые административные шаблоны, которые состоят из двух файлов - .admx и .adml. Файлы реестраДобавлять, изменять, а также удалять подразделы и значения параметров реестра вы можете не только при помощи утилиты «Редактор реестра». Редактор реестра использует REG-файлы, предназначенные для импорта и экспорта подразделов и значения параметров. Вы можете использовать такие файлы для распространения изменений параметров реестра на компьютеры, расположенные в локальной сети. В связи с тем, что после выполнения REG-файлов, их содержимое сливается с системным реестром локального компьютера, при создании таких файлов будьте внимательными, так как при неправильном использовании REG-файлов у вас могут возникнуть серьезные неполадки. При создании REG-файла необходимо соблюдать следующий синтаксис:
Версия_редактора_реестра
Пустая строка
[Путь_реестра1]
«Наименование_параметра1»=«Тип_данных1:Значение_данных1»
«Наименование_параметра2»=«Тип_данных2:Значение_данных2»
Пустая строка
[Путь_реестра2]
«Наименование_параметра3»=«Тип_данных3:Значение_данных3»
Рассмотрим каждую из составляющих REG-файла: Версия_редактора_реестра – это заголовок данного файла, без которого параметры, указанные в REG-файле не будут импортироваться в системный реестр. В качестве такого заголовка должна быть указана строка с текстом Windows Registry Editor Version 5.00. иногда вместо данного заголовка вы можете встретить REGEDIT4, который является форматом устаревших версий Windows 98/NT 4.0 Пустая строка определяет начало нового раздела реестра, тем самым упрощая возможность анализировать содержимое, который в таких файлах называется путем реестра. Путь_реестраХ представляет собой раздел или подраздел реестра, включающий первое импортируемое значение. При указании пути реестра, вы должны отделять каждый уровень косой чертой и заключать весь путь в квадратные скобки. В том случае, если последний уровень в реестре отсутствует – при импорте REG-файла будет создан такой подраздел. Наименование_параметраХ является названием импортируемого параметра реестра. Название параметра всегда должно быть заключено в кавычки и перед указанием его значения должен быть указан знак равенства. В том случае, если параметр с таким именем существует, его значение будет изменено согласно тому, которое указано в REG-файле, а если такого параметра не существует, то он автоматически будет создан с указанным вами значением. Тип_данныхХ определяет тип данных параметра реестра и всегда указывается после знака равенства. После типа данных перед значением данного параметра должно стоять двоеточие. Все типы данных были перечислены в одном из предыдущих разделов данной статьи. Значение_данныхХ следует сразу после двоеточия и должно иметь формат, соответствующий модифицируемому типу данных параметра. Помимо этих основных составляющих, для предоставления более удобного анализа REF-файла, вы можете добавлять комментарии. Все строки, начинающиеся с точки с запятой являются комментариями. Пример REG-файла:
Windows Registry Editor Version 5.00
;Отключить удаленный доступ к реестру
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteRegistry]
"Start"=dword:00000004
Утилита командной строки REGУтилита командной строки REG предназначена для просмотра разделов и параметров реестра, а также разнообразных манипуляций над ними. Данная утилита поддерживает определенный набор подкоманд, при помощи которых можно выводить список элементов раздела, сравнивать подразделы или их параметры, импортировать в реестр заданные кусты, сохранять копию указанных подразделов, а также выполнять множество различных действий. Для этой утилиты доступны следующие подкоманды: - REG add. Эта подкоманда позволяет добавлять в системный реестр новый подраздел или параметр;
- REG query. При помощи этой подкоманды вы можете выводить список параметров раздела, а также названия вложенных подразделов;
- REG delete. Позволяет удалять из раздела определенный подраздел или параметр;
- REG copy. Используя эту подкоманду, вы можете копировать параметры раздела по указанному пути раздела на локальном или удаленном компьютере;
- REG compare. Данная подкоманда позволяет вам сравнивать подразделы или параметры реестра;
- REG restore. При помощи этой подкоманды вы можете записывать в реестр ранее сохраненные подразделы и параметры;
- REG flags. Эта подкоманда отображает и устанавливает флаги заданного раздела;
- REG save. Позволяет сохранять копию указанных подразделов и параметров системного реестра в файл;
- REG import. Используя эту подкоманду, вы можете импортировать в реестр заданный куст;
- REG export. При помощи этой подкоманды вы можете экспортировать заданные подразделы и параметры в файл;
- REG load. Эта подкоманда предназначена для загрузки указанного вами куста из файла в системный реестр;
- REG unload. Позволяет выгрузить заданный вами куст из реестра в файл.
Каждая подкоманда включает в себя определенные параметры, позволяющие выполнять конкретные действия. Например, параметр /s подкоманды REG add указывает символ, используемый в качестве разделителя данных для параметров типа REG_MULTI_SZ, а одноименный параметр подкоманды REG copy используется для копирования всех подразделов и параметров. Для примера, добавим в контекстное меню ярлыка «Компьютер» команду «Программы и компоненты», просмотрим внесенные изменения, а затем удалим эту команду непосредственно из командной строки. Для этого необходимо выполнить следующие команды:
REG add HKLM\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\66 /ve /t REG_SZ /d "Программы и компоненты"
REG add HKLM\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\66\command /ve /t REG_SZ /d "control appwiz.cpl"
REG query HKLM\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\66\command /s /ve
REG delete HKLM\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\66\command
REG query HKLM\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\66\command
где в командах REG add параметр /ve указывает на то, что модифицироваться должен параметр с пустым именем (по умолчанию), параметр /t отвечает за используемый тип данных, а параметр /d определяет реальное значение, помещаемое в реестр. Параметр /s команды REG query позволяет вывести все вложенные подразделы, а при помощи параметра /ve можно увидеть значения параметров по умолчанию. Все вышеперечисленные действия можно увидеть на следующей иллюстрации:
Рис. 3. Выполнение простейших операций с реестром средствами командной строки
|
|