Работа с реестром Windows

Общие сведения о реестре Windows

    Реестр Windows (системный реестр) - это иерархическая (древовидная) база данных, содержащая записи, определяющие параметры и настройки операционных систем Microsoft Windows. Реестр в том виде, как он выглядит при просмотре редактором реестра, формируется из данных, источниками которых являются файлы реестра и информация об оборудовании, собираемая в процессе загрузки. В описании файлов реестра на английском языке используется термин "Hive". В некоторых работах его переводят на русский язык как "Улей". В документации от Microsoft этот термин переводится как "Куст".

Файлы реестра создаются в процессе установки операционной системы и хранятся в папке %SystemRoot%\system32\config (обычно C:\windows\system32\config). Для операционных систем Windows 2000/XP это файлы с именами

default

sam

security

software

system

.     В процессе загрузки система получает монопольный доступ к файлам реестра и, поэтому, их невозможно открыть для просмотра, скопировать, удалить или переименовать обычным образом. Для работы с содержимым системного реестра используется специальное программное обеспечение - редакторы реестра (REGEDIT.EXE, REGEDT32.EXE), являющиеся стандартными компонентами операционной системы. Для запуска редактора реестра можно использовать меню кнопки "Пуск"- "Выполнить" - regedit.exe

    После старта редактора, в левой части основного окна вы видите список корневых разделов (root keys) реестра. Каждый корневой раздел может включать в себя вложенные разделы (subkeys) и параметры (value entries) или ключи реестра.

Основное назначение корневых разделов:

HKEY_CLASSES_ROOT ( Общепринятое сокращенное обозначение HKCR ) - Ассоциации между приложениями и расширениями файлов и информацию о зарегистрированных объектах COM и ActiveX.

HKEY_CURRENT_USER (HKCU) - Настройки для текущего пользователя (рабочий стол, личные папки, настройки приложений). Этот раздел представляет собой ссылку на раздел HKEY_USERS\Идентификатор пользователя (SID) в виде S-1-5-21-854245398-1035525444-.

SID - это уникальный номер, идентифицирующий учетную запись пользователя, группы или компьютера. Он присваивается учетной записи при создании каждого нового пользователя системы. Внутренние процессы Windows обращаются к учетным записям по их кодам SID, а не по именам пользователей или групп. Если удалить, а затем снова создать учетную запись с тем же самым именем пользователя, то предоставленные прежней учетной записи права и разрешения не сохранятся для новой учетной записи, так как их коды безопасности будут разными. Аббревиатура SID образована от Security ID.

Идентификатор SID представляет собой числовое значение переменной длины, формируемое из номера версии структуры SID, 48-битного кода агента идентификатора и переменного количества 32-битных кодов субагентов и/или относительных идентификаторов (Relative IDentifiers, RID). Код агента идентификатора определяет агент, выдавший SID, и обычно таким агентом является локальная операционная система или домен под управлением Windows. Коды субагентов идентифицируют попечителей, уполномоченных агентом, который выдал SID, а RID - дополнительный код для создания уникальных SID на основе общего базового SID.

Для идентификатора S-1-5-21-854245398-1035525444: 1000, номер версии равен 1, код агента идентификатора - 5, а далее следуют коды четырех субагентов. В Windows NT и старше, при установке системы, создается один фиксированный (код 21) и три генерируемых случайным образом (числа после "S-1-5-21") кода субагентов. Также в процессе установки создаются некоторые (одинаковые для всех систем) учетные записи, как например, учетная запись администратора, которая всегда имеет RID равный 500

Для просмотра соответствия SID и имени пользователя можно воспользоваться утилитой PsGetSID.exe из пакета PSTools

HKEY_LOCAL_MACHINE (HKLM) - в данном разделе реестра хранятся глобальные аппаратные и программные настройки системы - записи для системных служб, драйверов, наборов управляющих параметров, общие настройки программного обеспечения, применимые ко всем пользователям. Это самая большая и самая важная часть реестра. Здесь сосредоточены основные параметры операционной системы, оборудования, программного обеспечения.

HKEY_USERS ( HKU) - индивидуальные настройки среды для каждого пользователя системы (пользовательские профили) и профиль по умолчанию для вновь создаваемых пользователей.

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\CurrentControlSet\Hardware Profiles\Current

    Возможности конкретного пользователя при работе с данными реестра определяются правами его учетной записи. Далее по тексту, предполагается, если это не оговорено особо, что пользователь имеет права администратора системы.

    Вообще-то, в корневом разделе HKLM есть еще 2 подраздела с именами SAM и SECURITY, но доступ к ним разрешен только для локальной системной учетной записью (Local System Account), под которой обычно выполняются системные службы (system services). Обычно, учетные записи пользователей и даже администраторов, таких прав не имеют, и редактор реестра, запущенный от их имени, не отображает содержимое разделов SAM и SECURITY. Для доступа к ним нужно, чтобы regedit был запущен от имени учетной записи с правами Local System, для чего можно воспользоваться утилитой PSExec

psexec.exe -i -s regedit.exe

Можно также воспользоваться стандартными средствами операционной системы, например, планировщиком заданий. С помощью команды at создаем задание на запуск regedit.exe в интерактивном режиме через 2-3 минуты от текущего времени (например- в 16час 14 мин.)

at 16:14 /interactive regedit.exe

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

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

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

Особенности реестра Windows Vista и последующих версий ОС семейства Windows

    Главным отличием реестра операционных систем Windows Vista / Windows Server 2008 и более поздних выпусков - появление нового раздела с данными конфигурации загрузки системы HKEY_LOCAL_MACHINE\BCD00000000.

Этот раздел содержит объекты и элементы конфигурации, используемые новым диспетчером загрузки BOOTMGR пришедшим на смену традиционному загрузчику NTLDR. Раздел HKEY_LOCAL_MACHINE\BCD00000000 является системным хранилищем данных конфигурации загрузки ( BCD - Boot Configuration Data ) и физически, представляет собой файл реестра c именем bcd. находящийся в каталоге \BOOT активного раздела ( раздела диска с загрузочной записью и файлом диспетчера BOOTMGR). При стандартной установке Windows 7 на новый жесткий диск, в качестве активного раздела создается небольшой ( размером около 100Мб) раздел, который содержит файлы и каталоги, необходимые для работы диспетчера загрузки. Обычно, этот раздел скрыт от пользователя, поскольку ему не присваивается буква логического диска и к его содержимому невозможно получить доступ стандартными средствами, такими, как например "Проводник" Windows (Explorer). При просмотре с использованием Диспетчера логических дисков, данный раздел отображается под названием "Зарезервировано системой" и имеет признак "Активный".

Загрузочный сектор данного раздела (Partition Boot Sector или PBR) выполняет загрузку файла диспетчера bootmgr. который должен находиться в его корне. В свою очередь, диспетчер загрузки bootmgr для своих целей использует системное хранилище конфигурации, которое должно находиться в папке с именем BOOT .

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

для просмотра виде, а импорт - как восстановление ранее сохраненных данных BCD.

Для работы с данными конфигурации загрузки используется специальная утилита командной строки BCDEDIT.EXE. позволяющая сохранять конфигурацию, восстанавливать из ранее сохраненной копии, просматривать содержимое хранилища, редактировать отдельные объекты конфигурации и их элементы. Новый механизм загрузки операционных систем семейства Windows довольно сложен для понимания и не имеет прямого отношения к работе с реестром, поэтому привожу ссылки на дополнительные материалы:

Сохранение и восстановление реестра

1. Использование точек восстановления (Restore Points)

    В Windows XP и старше, существует механизм ,с помощью которого, при возникновении проблем, можно восстановить предыдущее состояние компьютера без потери личных файлов (документы Microsoft Word, рисунки, Избранное, рабочий стол) с использованием точек восстановления (Restore Points). которые при стандартных настройках, создаются системой автоматически во время простоя компьютера или во время существенных системных событий, таких, как установка нового приложения или драйвера. Кроме того, имеется возможность в любое время создать точку восстановления принудительно, с помощью приложения "Восстановление системы", через меню Пуск - Программы- Стандартные - Служебные - Восстановление системы.

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

    Как уже упоминалось, для работы с точками восстановления используется приложение "Восстановление системы " -\windows\system32\restore\rstrui.exe

    Данные точек восстановления хранятся в каталоге System Volume Information системного диска. Это скрытый системный каталог, доступ к которому разрешен только локальной системной учетной записи (Local System), или, другими словами, не пользователям, а "Службе восстановления системы". Поэтому, если вы хотите получить доступ к его содержимому, вам придется добавить права вашей учетной записи с использованием вкладки "Безопасность" в свойствах каталога "System Volume Information". В папке System Volume Information есть подкаталог с именем, начинающемся с _restore. и внутри него - подкаталоги RP0, RP1.. - это и есть данные контрольных точек восстановления (Restore Point - RPn). Внутри папок RPn имеется каталог с именем snapshot. содержащий копии файлов реестра на момент создания контрольной точки. При выполнении операции восстановления системы восстанавливаются основные системные файлы и файлы реестра. Соответственно, например, если крах системы вызван установкой нового драйвера, то после отката на точку восстановления, даже при наличии в каталоге Windows исполняемого файла драйвера, записи в реестре, обеспечивающие его загрузку, исчезнут, и система вернется в рабочее состояние.

    Откат системы на точку восстановления является простым и эффективным способом восстановления работоспособности без потери пользовательских данных не только в случаях неудачного редактирования реестра, установки некорректно работающего системного программного обеспечения, но и, например, при вирусном заражении компьютера, когда имеется точка восстановления на момент времени, когда вируса еще не было в системе. Именно поэтому многие вредоносные программы пытаются уничтожить данные точек восстановления и отключить средства восстановления системы. В подавляющем большинстве случаев, запуск внедрившегося вируса обеспечивается определенными записями в реестре, а после отката эти записи исчезнут, и вирус не сможет получить управление, и тем самым, будет нейтрализован даже без использования антивирусного программного обеспечения. Как видно, механизм точек восстановления довольно эффективен, но воспользоваться им можно только в среде самой Windows - для выполнения отката неработоспособной системы, стандартно, нужно в ней же и загрузиться. А если система повреждена настолько, что загрузка невозможна, задача становится невыполнимой. Тем не менее, выход из данной ситуации ( и даже не один) - есть. Можно, например, воспользоваться Winternals ERD СOMMANDER (ERDC), - инструментом на базе специальной версии Windows PE, загружаемой с компакт диска или другого внешнего носителя. ERD Commander умеет работать с точками восстановления Windows, подключенной к нему при загрузке, и позволяет легко выполнить откат на ее работоспособное состояние через меню "Start - System Tools - System Restore"

С помощью System Restore Wizard восстановление выполняется так же, как это можно было бы выполнить в среде рухнувшей системы.

Если же ERDC нет под рукой, или полный откат системы не нужен, можно воспользоваться ручным восстановлением отдельных файлов реестра, копии которых можно взять из данных точки восстановления. Для этого достаточно получить доступ к файловой системе жесткого диска с поврежденной Windows. Можно загрузиться в другой системе (Windows PE, Live CD, даже DOS с поддержкой файловых систем FAT32 / NTFS), получить доступ к данным системного диска проблемной Windows и просто заменить испорченный файл (ы) раздела реестра на файл (ы) из каталога точки восстановления .

    В папке, где хранятся данные точек восстановления, System Volume Information на системном диске, находим подкаталог с именем, начинающемся с _restore. и внутри него - подкаталоги RP0, RP1. - это и есть искомые контрольные точки (Restore Point - RPx). Внутри папки RPx открываем каталог SNAPSHOT. содержащий копии файлов реестра, на момент создания контрольной точки.

Файл REGISTRY_MACHINE_SYSTEM - это и есть копия файла SYSTEM. он же - раздел реестра HKEY_LOCAL_MACHINE\SYSTEM. Остается лишь перетащить этот файл в каталог \WINDOWS\SYSTEM32\CONFIG\ и переименовать его. Запорченный файл system можно, на всякий случай, переименовать в system.bad или удалить.

Обычно, для восстановления работоспособности поврежденной операционной системы, достаточно копирования только файла SYSTEM, поскольку именно в нем хранятся наиболее важные параметры, необходимые для загрузки и функционирования ОС. Копирование файла SOFTWARE влияет на изменение состава установленного программного обеспечения для всех пользователей. При необходимости восстановления настроек пользователя нужно взять соответствующий ему файл _REGISTRY_USER_NTUSER_S-1-5-21: и скопировать его в каталог профиля (для Windows 2000/XP - обычно это ":\Documents and Settings\Имя пользователя") под именем ntuser.dat

Если при таком способе восстановления реестра будет использоваться Winternals ERD Commander, в режиме работы с выбранной Windows, то могут возникнуть проблемы с занятостью файлов. Чтобы этого не случилось, лучше в процессе загрузки не подключаться к проблемной операционной системе и выбрать None :

2. Использование утилиты резервного копирования/восстановления NTBACKUP.EXE

    В Windows 2000 механизма точек восстановления нет. Однако, как и в Windows XP, имеется утилита архивации, а точнее - резервного копирования и восстановления NTBACKUP.EXE. позволяющая выполнить практически то же, что делается при создании точек восстановления (и даже немного больше). NTBACKUP позволяет создать архив состояния системы из 2-х частей, - загрузочной дискеты, позволяющей выполнить начальную загрузку средств восстановления и архив данных для восстановления в виде обычного файла с расширением .bkf, который может храниться на жестком диске или сменном носителе. Для получения копии состояния системы жмем "Пуск" - "Выполнить"- ntbackup.exe

Запускаем "Мастер архивации". и указываем ему, что нужно архивировать состояние системы.

и где хранить данные архива

    После завершения работы мастера будет создан архив состояния системы (D:\ntbackup.bkf) С помощью "Мастера восстановления" можно вернуть состояние системы на момент создания архива в любой момент времени.

3. Использование утилиты для работы с реестром из командной строки REG.EXE

    В ОС Windows 2000 утилита REG.EXE входила в состав пакета Support tools, в Windows XP - входит в стандартный набор программ, устанавливаемых в процессе инсталляции системы. На практике, можно для Windows 2000 использовать REG.EXE из комплекта Windows XP - просто скопируйте ее в каталог \winnt\system32). Запускается из командной строки. При запуске без параметров выдает краткую справку по использованию:

Программа редактирования системного реестра из командной строки, версия 3.0

(C) Корпорация Майкрософт, 1981-2001. Все права защищены

REG [Список параметров]

== [ QUERY | ADD | DELETE | COPY |

SAVE | LOAD | UNLOAD | RESTORE |

COMPARE | EXPORT | IMPORT ]

Код возврата: (за исключением REG COMPARE)

Источник: ab57.ru

Категория: Программное обеспечение

Похожие статьи: