|
|
|||||||||||||||||||||||||||||
|
Архитектура системного реестра Windows. Часть 1Источник: dimanb Dmitry Bulanov
Во многих своих статьях я указываю твики реестра и говорю об изменении каких-либо параметров, которые тем или иным образом изменяют конфигурацию операционной системы Windows. Насколько известно большинству пользователей персональных компьютеров, реестр играет основную роль в конфигурировании и управлении операционных систем, и является неким хранилищем общесистемных и пользовательских параметров. Несмотря на то, что многие уверены в том, что все конфигурационные данные хранятся именно в виде данных на жестком диске, на самом деле параметры системного реестра расположены в памяти самого компьютера и поддерживаются исполнительной системой, а также ядром самой операционной системы. Об этом моменте, как и о многих других, вы узнаете из контекста данной статьи. Использование системного реестраИтак, реестром Windows является иерархическая база данных, которая хранит конфигурационную информацию операционной системы, приложений, а также информации о пользователях и оборудовании. Структура данных для удобности использования предоставлена в древовидном формате. Большую часть параметров, содержащихся в реестре вы можете отконфигурировать вручную при помощи пользовательского интерфейса (например, в разделе HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsExplorer вы можете выполнять настройки в меню "Пуск", что также можете сделать из диалогового окна "Настройка меню "Пуск"", вызываемого по нажатии на кнопку "Настроить" в свойствах панели задач и меню "Пуск"), однако, для изменения некоторых дополнительных параметров никакого графического пользовательского интерфейса (GUI) не предусмотрено (например, для настройки диалога переключения между окнами вы можете воспользоваться параметрами из раздела HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAltTab). Для настройки таких параметров удобнее всего использовать ряд утилит, предназначенных для модификации реестра. Операционная система Windows предоставляет такие штатные средства для работы с реестром, как утилита "Редактор реестра" (Regedit.exe), которая имеет удобный для работы графический интерфейс, а также утилиты командной строки Reg. При помощи этих обеих утилит вы можете просматривать, добавлять, удалять, сравнивать, а также копировать, составлять и восстанавливать отдельные копии элементов реестра. При работе с каждой из этих утилит стоит быть внимательными и осторожными, так как некорректное изменение параметров реестра чревато серьезными последствиями, из-за которых может даже понадобиться переустанавливать операционную систему. Считываться конфигурационная информация системного реестра может в различные моменты работы операционной системы, начиная с модификации какого-либо конкретного параметра или раздела и заканчивая мониторингом конфигурационных параметров специфического программного обеспечения. Но всегда конфигурационные данные системного реестра считываются в следующих случаях:
Помимо считывания данных о разделах и параметрах системного реестра, его данные также могут модифицироваться. Далее предоставлен список наиболее часто повторяющихся ситуаций, связанных с модификацией параметров и разделов реестра:
Структура реестраВсе вышеперечисленные конфигурационные параметры содержатся в разделах реестра, которые размещены в корневом разделе, контролирующем, как и когда будут использоваться вложенные разделы и параметры. В каждом разделе могут быть созданы записи, называемые параметрами. Раздел может содержать любое количество параметров, значения которых могут быть предоставлены в любой возможной форме. Каждый раздел имеет свое уникальное имя, состоящее из одного или нескольких символов, не чувствительных к регистру. Все имена корневых разделов представляют Windows-описатели (Handlers) разделов (HEY), в связи с этим и было создано название ключевых разделов HKEY (HK). В следующей таблице вы можете увидеть названия разделов, их аббревиатур, а также краткое описание:
Таблица 1. Описание корневых разделов системного реестра Windows В следующих подразделах вы найдете более подробную информацию о каждом корневом разделе реестра. HKEY_USERSВ корневом разделе HKEY_USERS (HKU) системного реестра вы можете найти подразделы для каждого пользовательского профиля, а также регистрационную базу данных классов и подраздел HKU.DEFAULT, который связан с профилем, предназначенным для процессов, выполняемых под локальной системной учетной записью. Помимо этого, данный профиль используется службой Winlogon, скажем, для изменения параметров фона рабочего стола на экране входа в систему. Также, много системных служб запускается от имени учетной записи Local System, где применяется профиль по умолчанию. Для этого раздела недоступна информация, которая хранится в профиле пользователей, сопоставленных с другими учетными записями. Информация по каждому профилю операционной системы помещается в подраздел, имя которого соответствует идентификатору (SID) учетной записи. Сами конфигурационные данные, которые находятся в таких подразделах, включают в себя время последней загрузки данного профиля, двоичное представление этого идентификатора, а также путь к кусту профиля на жестком диске. Еще некоторые службы используют учетную запись, которой необходимо аутентифицироваться на других компьютерах, расположенных в локальной сети, но не требуется членство в административных группах или привилегий, которые назначаются учетной записью Local System. Такая учетная запись называется Network Service и процессы, выполняемые под этой учетной записью, используют ее профиль, который расположен в разделе HKUS-1-5-20 и его файлы расположены в папке %SystemRoot%ServiceProfilesNetworkService. Еще есть учетная запись Local Service, которая по своим особенностям очень похожа на Network Service, но к основному ее отличию можно отнести то, что эта учетная запись обращается только лишь к тем сетевым ресурсам, которые разрешают анонимный доступ. Такой профиль загружается в разделе HKUS-1-5-19 и физически хранится в папке %SystemRoot%ServiceProfilesLocalService. HKEY_CURRENT_USERВ корневом разделе HKEY_CURRENT_USER (HKCU) вы найдете конфигурационные параметры программного обеспечения и пользовательские данные, зарегистрированные для текущего локального пользователя. Всегда подразделы HKCU и их параметры будут ссылаться только на профиль текущего пользователя, который на жестком диске можно найти в файле c:Users%username%Ntuser.dat. И каждый раз, при загрузке профиля пользователя, на подраздел в HKEY_USERS создается ссылка, соответствующая текущему вошедшему в систему пользователю. Во вложенных подразделах этого корневого раздела системного реестра вы можете настраивать:
HKEY_LOCAL_MACHINEКорневой раздел HKEY_LOCAL_MACHINE (HKLM) содержит свои подразделы с параметрами конфигурации, относящиеся к общесистемной конфигурации текущего компьютера, то есть конфигурационных данных, которые не настраиваются для всех пользователей. Стоит обратить внимание на то, что системный реестр 64-разрядных версий операционных систем Windows состоит из 32- и 64-битных разделов реестра, где у большинства 32-разрядных разделов реестра названия разделов идентичны тем, которые указаны в 64-разрядном разделе, и наоборот. По умолчанию, 64-разрядная версия редактора реестра (утилита Regedit.exe), которая входит в состав 64-разрядных операционных систем Windows отображает как 64, так и 32-разрядные разделы. В 64-разрядной версии утилиты "Редактор реестра", 32-разрядные разделы расположены здесь: HKEY_LOCAL_MACHINESoftwareWOW6432Node. Раздел HKLM содержит следующие основные подразделы: BCD. Данный подраздел содержит информацию о конфигурационной базе данных загрузки (Boot Configuration Database BCD). Эта база данных заменяет файл Boot.ini, который использовался в операционных системах, вышедших до Windows Vista, и предоставляет больше возможностей для конфигурации данных о загрузке ОС. Каждая запись в текущем подразделе, которая была сделана во время установки операционной системы или во время изменения параметров загрузка средствами командной строки, хранится в дочернем подразделе Objects или в качестве самого объекта, на который ссылается загрузочная запись в виде GUID, или в подразделах с названиями в виде цифр. Значения, связанные с каждым параметром подразделов соответствуют параметрам утилиты bcdedit.exe командной строки. COMPONENTS. В текущем подразделе содержится информация, которая относится к компоненту на основании обслуживания стека (Component Based Servicing CBS). Данный стек включает в себя всевозможные файлы и ресурсы, которые являются частью образа установщика Windows. Параметры CBS API, которые расположены в данном разделе, предназначены для определения установленных компонентов и их конфигурации. Используется же вся эта информация каждый раз, когда компоненты устанавливаются, обновляются или удаляются в индивидуальном, либо в пакетном режимах. HARDWARE. Этот подраздел включает в себя описание аппаратного обеспечения для локальной системы, а также все сопоставления драйверов с физическими устройствами. Здесь вы можете найти конфигурационные параметры для всех устройств, которые присутствуют в "Диспетчере устройств". В разделе HARDWARE можно отметить четыре основных подраздела. Подраздел ACPI содержит информацию о конкретных возможностях ACPI на этом компьютере. Подраздел Descriptions содержит описания центральных процессоров, процессоров для операций с плавающей точкой, а также многофункциональных устройств компьютера. Подраздел DeviceMap сопоставляет устройства драйверам. В подразделе ResourceMap имеются три основных подраздела. Первый предназначен для уровня аппаратных абстракций, таких как HAL, применяемый при отслеживании найденных устройств. Второй - для Plug-and-Play Manager, то есть для записи устройств, про которые известно. А третий - для отображения объема оперативной памяти. В зависимости от аппаратной конфигурации данный раздел может содержать дополнительные подразделы. SAM. Подраздел SAM (Security Accounts Manager) раздела HKLM включает в себя такую информацию о локальных пользователях и группах, как сопоставления с доменом Active Directory, определения групп, а также пароли. Несмотря на то, что на контроллерах домена Active Directory в базе данных хранятся общедоступные параметры и сведения о пользователях, компьютерах и доменных группах, SAM-файл является базой учетных записей пользователей, содержащей сведения об уровнях пользовательских привилегий, паролей и т.п., дескриптор защиты которой сконфигурирован так, что к нему не имеет доступ даже администратор. Поэтому по умолчанию вся ветвь подраздела SAM закрыта от просмотра. Вспомогательными файлами для данного раздела являются файлы Sam, Sam.log и Sam.sav. SECURITY. С данным подразделом связаны данные, которые имеют отношение к общесистемным политикам безопасности. Помимо этого, подразделы SAM и SECURITY связаны специально для хранения информации о правах, назначенных пользователям в подразделе HKLMSECURITYSAM. Просмотр данного раздела многого не даст (по умолчанию дескриптор защиты установлен так, что доступ к этому разделу есть только у учетной записи System), так как данные, которые в нем содержаться, не документированы, а все пароли тщательно зашифрованы. Вспомогательными файлами для данного раздела являются файлы Security, Security.log и Security.sav. SOFTWARE. Текущий подраздел можно назвать в какой-то степени корнем всей структуры подразделов HKLM, так как это именно то место, где операционная система Windows хранит общесистемную конфигурационную информацию приложений и компонентов, которые не принимают участие в загрузке самой системы. Кроме того, при установке программного обеспечения именно в этом разделе создаются подразделы, предназначенные для сохранения своих общесистемных настроек. Большая часть данных о настройках пользовательского интерфейса хранится в подразделе HKLMSoftwareMicrosoftWindowsCurrentVersion. Здесь также вы можете с легкостью найти подразделы, предназначенные для восстановления системы, шифрующей файловой системы, службы терминалов и многое другое. Вспомогательными файлами для данного раздела являются файлы Software, Software.log и Software.sav. SYSTEM. В этом, последнем, разделе HKLM находится общесистемная конфигурационная информация, которая выполняется в последнюю очередь после завершения загрузки операционной системы. К таким данным можно отнести управляющие настройки, список драйверов и запускаемых служб, которые применяются при последней удачной загрузке, также называемой последней конфигурацией, так как для запуска операционной системы она критична и Windows всегда делает ее копию. Одним из основных подразделов HKLMSYSTEM является подраздел CurrentControlSet, который указывает на набор управляющих настроек, используемых на данный момент операционной системой. Вспомогательными файлами для данного раздела являются файлы System, System.alt, System.log и System.sav. HKEY_CLASSES_ROOTЭтот корневой раздел, в какой-то степени, можно назвать подразделом HKEY_LOCAL_MACHINESoftwareClasses, содержащий параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Он включает в себя сопоставления расширений файлов, а также идентифицирующие данные COM-классов. Здесь для каждого зарегистрированного типа файлов, в соответствующих подразделах, указаны сведения, обеспечивающие выполнение необходимой программы при открытии файла. В свою очередь, в подразделе HKEY_CURRENT_USERSoftwareClasses, параметры определяют регистрационные данные классов расширений файлов, которые относятся только к текущему пользователю и физически расположены в файле c:Users%имя_пользователя%AppDataLocalMicrosoftWindows UsrClass.dat. Данные этого источника также включены в раздел HKCR, но данные, которые были добавлены или изменены непосредственно из этого раздела будут сохранены операционной системой в разделе HKEY_LOCAL_MACHINESoftwareClasses. Стоит также обратить внимание на то, что для каждого пользователя локального компьютера такие данные являются специфическими, что не позволяет непривилегированному пользователю изменять или удалять разделы в HKCR, а также указывать специфические настройки для определенных типов файлов конкретным пользователям. HKEY_CURRENT_CONFIGЕсли корневой раздел HKEY_CLASSES_ROOT можно назвать ссылкой на разделы HKEY_LOCAL_MACHINESoftwareClasses и HKEY_CURRENT_USERSoftwareClasses, то данный раздел является обыкновенной ссылкой на текущий профиль оборудования, расположенный в разделе HKEY_LOCAL_MACHINESystemCurrentControlSetHardware ProfileCurrent. Именно при помощи этого раздела реестра вы можете управлять возможными настройками системных драйверов для существующих аппаратных устройств. Несмотря на то, что можно указать профиль, который будет активен при следующей загрузке операционной системы, настройки HKCC будут всегда применяться для активного профиля. HKEY_PERFORMANCE_DATAИзвестно, что при обнаружении возможных проблем с аппаратной конфигурацией и всей производительностью системы в целом, рекомендуется использовать оснастку "Системный монитор" с соответствующими счетчиками производительности. В операционных системах Windows системный реестр также относится к механизму, обеспечивающему доступ ко всем значениям счетчиков производительности, используемых для мониторинга системы. Основным преимуществом в использовании счетчиков производительности средствами реестра является возможность мониторинга удаленных компьютеров без особых затрат, так как API-функции реестра позволяют получить быстрый доступ к удаленному реестру. В связи с тем, что в данном разделе хранятся не конфигурационные параметры, а только ссылки на соответствующие источники данных счетчиков производительности, доступ к разделу HKPD средствами утилиты "Редактор реестра" запрещен. Информацию из данного раздела реестра вы можете получить при помощи функции PDH (Performance Data Helper), которая предоставляется библиотекой Pdh.dll (Performance Data Helper API), компоненты которой вы можете увидеть на следующей иллюстрации: Значение параметров реестра WindowsКак вы уже поняли, разделы системного реестра можно назвать контейнерами, которые содержат конфигурационную информацию. Информация такого рода содержится в параметрах, которые вполне можно сравнить с файлами, расположенными в папках на диске, откуда, собственно, и заимствовано соглашение об их именовании. Соответственно, вы можете дать одинаковые названия множеству параметров, но только в том случае, если эти параметры расположены в разных разделах или подразделах. Каждый параметр реестра состоит из таких составляющих, как имя параметра, тип данных, а также самого значения. С соблюдением правильных типов данных добавляемых вами параметров нужно быть крайне внимательными и осторожными. Используйте именно тот тип данных, который указан в источнике самого твика, так как в противном случае последствия могут быть весьма существенными. Начиная с версии операционной системы Windows XP, максимальная длина имени параметра не должна превышать 16383 символов. В общей сложности насчитывается 15 типов данных, но в большинстве случаев используются только параметры типа REG_DWORD, REG_BINARY, а также REG_SZ. Все типы данных параметров реестра описаны в следующей таблице:
Таблица 2. Типы данных параметров реестра Также стоит отметить то, что для повышения эффективности использования системного реестра, в реестр заносится имя внешнего файла, где хранятся значения, превышающие размер в 2048 байт. Общий размер всех параметров раздела не должен превышать 64 КВ. Ссылки по теме
|
|