Лабораторная работа №3
Сервер сценариев WSH. Работа с реестром
Цель: Изучить структуру реестра Windows NT/2000, способы резервирования данных реестра, возможности сервера сценариев по работе с реестром.
Общие положения
Прежде чем начать разговор о работе с реестром, следует сказать, что реестр является одной из важнейших составляющих операционной системы Windows, и неправильные действия с реестром могут причинить серьёзный ущерб работе операционной системе.
Реестр - компонент операционной системы, который в иерархической базе данных хранит важнейшие установки и информацию о приложениях, системных операциях и пользовательской конфигурации.
Реестр пришел на смену конфигурационным файлам (INI-файлам) и призван был снять неудобства и ограничения, связанные с их использованием. В виде, более или менее напоминающем его нынешнюю структуру, реестр появился в Windows NT 3.5 (тогда он имел 4 корневых раздела: HKEY_ LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT и HKEY_USERS). Новый компонент операционной системы был предназначен для того, чтобы заменить собой многочисленные инициализационные и установочные файлы, разбросанные по" различным каталогам на жестком диске и сетевом сервере. Эти файлы требовались для обеспечения корректной работы операционной системы, приложений и аппаратных устройств, но управление ими было задачей сложной, трудоемкой и неудобной. Реестр как централизованная база данных представляет собой источник конфигурационной информации, где все параметры сведены воедино, что обеспечивает возможность эффективного управления средой Windows NT/2000. Перечисление компонентов системы Windows NT/2000, использующих реестр, и краткое описание их взаимодействия с этой базой данных приведено ниже:
|
· Программы установки (Setup). Каждый раз при запуске программы установки Windows 2000 или других установочных программ (для аппаратных и программных средств) программа. Setup добавляет в реестр новые конфигурационные данные. Начиная свою работу, все грамотно разработанные программы установки считывают информацию реестра, чтобы определить, присутствуют ли в системе компоненты, обязательные для успешного завершения установки. Наконец, централизованный реестр позволяет приложениям совместно использовать конфигурационную информацию и предоставляет им больше возможностей взаимодействия между собой. Чтобы приложение могло получить статус "Designed for Windows 2000", оно должно активно и правильно использовать реестр, а также содержать утилиту, позволяющую корректно выполнить удаление этого приложения (uninstall utility), не удаляя компонентов, которые могут использоваться другими программами (.DLL,.OCX, и т. д.). Эта утилита использует информацию, хранящуюся в реестре.
· Распознаватель (Recognizer). Каждый раз при запуске компьютера под управлением Windows NT/2000 распознаватель аппаратных средств (Hardware Recognizer) помещает в реестр список обнаруженных им устройств. На компьютерах с процессорами Intel распознавание аппаратных средств осуществляется программой Ntdetect.com и ядром Windows NT/2000 (Ntoskrnl.exe).
· Ядро Windows NT/2000 (Windows NT/2000 Kernel). При старте системы ядро Windows NT/2000 извлекает из реестра сведения о загружаемых драйверах устройств и порядке их загрузки. Кроме того, программа Ntoskrnl.exe передает в реестр информацию о себе (примером такой информации может служить, например, номер версии).
|
· Драйверы устройств. Драйверы устройств обмениваются с реестром параметрами загрузки и конфигурационными данными. Эти данные аналогичны строкам device=, которые можно найти в файле Config.sys для запуска компьютера под управлением MS-DOS. Драйвер устройства должен сообщить об используемых им системных ресурсах, включая аппаратные прерывания и каналы DMA, чтобы система могла включить эти данные в реестр. Приложения и драйверы устройств могут считывать эту информацию реестра, предоставляя пользователям интеллектуальные программы инсталляции и конфигурирования.
· Административные средства Windows 2000. Административные средства Windows 2000, в том числе утилиты панели управления и оснастки, собранные в группу Администрирование (Administrative Tools), представляют собой наиболее удобные и безопасные средства модификации реестра. Редакторы реестра, рассмотрению которых посвящен отдельный раздел данной главы, также полезны для его просмотра и, время от времени, для внесения изменений в конфигурацию системы.
· Пользовательские профили (user profiles). Windows NT/2000 обеспечивает возможность создания множества пользовательских профилей. Вся информация, относящаяся к конкретному пользовательскому имени и ассоциированным с ним правам, хранится в реестре. Более подробная информация о пользовательских профилях будет приведена далее в этой главе, здесь же отметим, что пользовательский, профиль определяет индивидуальные параметры настройки дисплея, параметры сетевых соединений, принтеры и многое другое. Пользовательские профили бывают следующих типов: локальные (local user profile), создаваемые автоматически при первой регистрации пользователя на локальном компьютере, перемещаемые (roaming user profile), создаваемые администратором и хранящиеся на сервере, и обязательные (mandatory user profile)— перемещаемые профили, обязательные для применения. Информация о пользовательских профилях также хранится в реестре.
|
· Аппаратные профили (hardware profiles). Реестр, в отличие от INI-файлов, позволяет хранить множественные аппаратные конфигурации. Так, например, можно создать профили для док-станций (что актуально для пользователей портативных компьютеров), а также профили для съемных устройств. Аппаратный профиль представляет собой набор инструкций, с помощью которого можно указать операционной системе, драйверы каких устройств должны загружаться при запуске компьютера. В процессе установки Windows 2000 создается стандартный аппаратный профиль, который содержит информацию обо всех аппаратных средствах, обнаруженных на компьютере на момент инсталляции.
Структура реестра
Реестр Windows 2000 состоит из пяти так называемых корневых разделов (root keys):
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_ MACHINE, HKEY_USERS и HKEY_CURRENT_CONFIG.
Каждый раздел может содержать элементы данных, которые называются параметрами (value entries), а также вложенные разделы (subkeys). Для понимания этой концепции можно провести аналогию с файловой системой. Разделы в структуре реестра аналогичны каталогам, а значимые элементы — файлам. Рис. 14.1 иллюстрирует иерархическую структуру реестра Windows 2000. Все имена корневых разделов начинаются со строки HKEY_, что указывает разработчикам программного обеспечения на то, что это — дескриптор, который может использоваться программой. Дескриптор (handle) — это значение, используемое для уникального описания ресурса, к которому программа может получить доступ. Описания корневых разделов реестра Windows NT/2000 приведены в табл. 1.
Таблица 1. Корневые разделы реестра
Имя корневого раздела | Описание |
HKEY_LOCAL_MACHINE | Содержит глобальную информацию о компьютерной системе, включая такие данные об аппаратных средствах и операционной системе, в том числе: тип шины, системная память, драйверы устройств и управляющие данные, используемые при запуске системы. Информация, содержащаяся в этом разделе, действует применительно ко веем пользователям, регистрирующимся в системе Windows NT/2000. На верхнем уровне иерархии реестра для этого раздела имеются три псевдонима: HKEY CLASSES ROOT, HKEY CURRENT CONFIG и HKEY_DYN_DATA |
HKEY_CLASSES_ROOT | Содержит ассоциации между приложениями и типами файлов (по расширениям имени файла). Кроме того, этот раздел содержит информацию OLE (Object Linking and Embedding), ассоциированную с объектами COM, а также данные по ассоциациям файлов и классов (эквивалент реестра ранних версий. Windows, служивших настройкой над MS-DOS). Параметры этого раздела совпадают с параметрами, расположенными в разделе HKEY_LOCAL_MACHINE\Software\Classes. |
HKEY_CURRENT_CONFIG | Содержит конфигурационные данные для текущего аппаратного профиля. Аппаратные профили представляют собой наборы изменений, внесенных в стандартную конфигурацию сервисов и устройств, установленную данными разделов Software и System корневого раздела HKEY_LOCAL_MACHINE. В разделе HKEY_CURRENT_ CONFIG отражаются только изменения. Кроме того, параметры этого раздела появляются также в разделе HKEY_LOCAL_MACHINE\System \CurentControlSet\HardwareProfites\CuiTent |
HKEY_CURRENT_USER | Содержит, профиль пользователя, на данный момент зарегистрировавшегося в системе, включая переменные окружения, настройку рабочего стола, параметры настройки сети, принтеров и приложений. Этот раздел представляет собой ссылку на раздел HKEY USERS\username, где username — имя пользователя, зарегистрировавшегося в системе на текущий момент |
HKEY_USERS | Содержит все активно загруженные пользовательские профили, включая HKEY_CURRENT_USER, а также профиль по умолчанию. Пользователи, получающие удаленный доступ к серверу, не имеют профилей, содержащихся в этом разделе; их профили загружаются в реестры на их собственных компьютерах. Windows NT/2000 требует наличия учетных записей для каждого пользователя, регистрирующегося в системе. Раздел HKEY_USERS содержит вложенный раздел \Default, а также другие разделы, определяемые идентификатором безопасности (Security ID) каждого пользователя |
Данные реестра хранятся в виде параметров, расположенных в разделах реестра. Каждый параметр характеризуется именем, типом данных и собственно значением. Три части параметра реестра всегда располагаются в следующем порядке:
В табл. 2 перечислены, типы данных, определенные и используемые в системе.
Таблица 2. Типы данных для параметров реестра
Тип данных | Описание |
REG_BINARY | Двоичные данные. Большинство аппаратных компонентов используют информацию, которая хранится в виде двоичных данных. Редакторы реестра отображают эту информацию в шестнадцатеричном формате |
REG_DWORD | Данные представлены в виде значения, длина которого составляет 4 байта. Этот тип данных используют многие параметры драйверов устройств и сервисов. Редакторы реестра могут отображать эти данные в двоичном, шестнадцатеричном и десятичном формате |
REG_EXPAND_SZ | Расширяемая строка данных. Эта строка представляет собой текст, содержащий переменную, которая может быть заменена при вызове со стороны приложения |
REG_MULTI_SZ | Многострочное поле. Значения, которые фактически представляют собой списки текстовых строк в формате, удобном для восприятия человеком, обычно имеют этот тип данных. Строки разделены символом NULL |
REG.SZ | Текстовая строка в формате, удобном для восприятия человеком. Значениям, представляющим собой описания компонентов, обычно присваивается именно этот тип данных |
Хранение данных реестра
В Windows NT/2000 элементы реестра хранятся в виде атомарной структуры. Реестр подразделяется на составные части, которые разработчики этой операционной системы назвали кустами, или ульями (hives) по аналогии с ячеистой структурой пчелиного улья. Куст представляет собой дискретную совокупность разделов, вложенных разделов и параметров, берущую начало в вершине иерархии реестра. Отличие кустов от других групп разделов состоит в том, что они являются постоянными компонентами реестра. Кусты не создаются динамически при загрузке операционной системы и не удаляются при ее остановке. Таким образом, раздел HKEY_LOCAL_MACHINE \Hardware, который строится динамически распознавателем аппаратных средств при запуске Windows NT/2000, кустом не является. Данные кустов реестра хранятся в файлах, находящихся в каталогах %SystemRoot%\System32\Config и %SystemRoot%\Profiles\Username (Windows NT 4.0) и %SystemRoot%\System32\Config и %SystemDrive%\Documents and Settings\Username (Windows 2000).
Каждый куст реестра Windows NT/2000 ассоциирован с набором стандартных файлов), В табл.3 перечислены стандартные кусты реестра Windows NT/2000 и поддерживающие их файлы.
Таблица 3. Стандартные файлы, обеспечивающие поддержку кустов реестра Windows NT
Ветвь реестра | Имена файлов |
HKEY_LOCAL_MACHINE\SAM | Sam, Sam. log, Sam.sav |
HKEY_LOCAL_MACHINE\Security | Security, Security.log, Security.sav |
HKEY_LOCAL_MACHINE\Software | Software, Software.log, Software.sav |
HKEY_LOCAL_MACHINE\System | System, System. alt, System.log, System. sav |
HKEY_CURRENT_CONFIG | System, System.alt, System.log, System. sav |
HKEY_USERS\.DEFAULT | Default, Default.log, Default.sav |
(Файлы, не ассоциированные, с разделами) | Userdiff, Userdiff.bg |
HKEY_CURRENT_USER | Ntuser.dat, Ntuser.dat.log |
Все файлы кустов реестра, за исключением HKEY_CURRENT_USER, находятся в подкаталоге %SystemRoot%\System32\Cofig.
Поддержку куста HKEY_CURRENT_USER выполняют файлы Ntuser.dat и Ntuser.dat.log. В файлах Ntuser.dat хранятся пользовательские профили; файл Ntuser.dat.log отслеживает изменения, которые вносились в файл Ntuser.dat. В Windows NT 4.0 эти файлы располагаются во всех подкаталогах каталога %SystemRoot%\Profiles (за исключением подкаталога \All Users). В Windows 2000 эти файлы располагаются в каталогах % SystemDrive %\Documents and\Settings \%Username%.
Файлы Ntuser и Userdiff были впервые введены в Windows NT 4.0:
· файл Ntuser.dat, в котором хранится пользовательский профиль, заменил собой файлы usemamexxx и adminxxx из предыдущих версий Windows NT;
· файл Ntuser.dat из каталога %SystemRoot%\Profiles\DefaultUser заменил собой файл Userdef из предыдущих версий Windows NT. Этот профиль используется для построения куста HKEY_CURRENT_USER, когда новый пользователь впервые регистрируется в системе;
· файлы Userdiff, которые находятся только в каталоге %SystemRoot% \System32\Config, не ассоциируются ни с одним кустом. Они служат для обновления существующих профилей пользователей, использовавшихся в предыдущих версиях Windows NT, таким образом, чтобы эти профили могли применяться в Windows NT 4.6 и последующих версиях (Windows 2000).
С кустами ассоциируются файлы четырех типов. Все эти типы файлов (с соответствующими расширениями имен файлов) перечислены в табл.4.
Таблица 4. Типы файлов, ассоциированных с кустами реестра Windows NT 4.0/Windows 2000
Тип файла | Описание |
Без расширения имени файла | Содержит копию куста |
alt | Содержит резервную копию жизненно важного куста HKEY_LOCAL_MACHINE\System. Только раздел System имеет соответствующий файл с расширением alt |
log | Содержит журнал транзакций, в котором регистрируются все изменения, внесенные в разделы и значимые элементы куста |
sav | Содержит копии файлов куста в том виде, который они имели на момент завершения текстовой фазы процесса установки. Файлы с расширением sav имеются для разделов Software, System, SAM, Security и Default. Windows NT/2000 выполняет резервное копирование содержимого кустов в процессе инсталляции. Процедура инсталляции состоит из двух стадий: стадии текстового режима и стадии графического режима. Когда установка в текстовом режиме завершается, выполняется копирование кустов в файлы с расширением sav. Это делается для того, чтобы защитить кусты от ошибок, которые могут произойти в случае сбоя на графической стадии установки. Если процедура установки даст сбой на графической стадии, то после перезагрузки компьютера будет производиться повтор только графической стадии установки. Sav-файлы используются для перестройки кустов реестра |
1.3. Использование утилиты Reg
Утилита Reg.exe, входящая в набор утилит Windows 2000 Support Tools, позволяет добавлять, редактировать, удалять и искать разделы и значимые элементы реестра, выполнять их резервное копирование и восстановление, а также выполнять над ними другие операции. Утилита Reg может использоваться из командной строки или применяться в командном файле. Она позволяет выполнять операции над реестрами как локального, так и удаленных компьютеров.
Утилита Reg реализует функциональные возможности следующих утилит для работы с реестром из предыдущих версий Resource Kit: REGCHG.EXE, REGDELEXE, REGDIR.EXE, REGREAD.EXE, REGSEC.EXE, RESTKEY.EXE, RREGCHG.EXE, и SAVEKEY.EXE. В Windows 2000 она замещает собой все эти утилиты.
Для резервного копирования и восстановления реестра используются следующие команды (типы операций) утилиты Reg:
REG SAVE и REG BACKUP
Эти команды копируют указанный элемент, раздел или куст реестра в указанный файл, очень полезны для резервного копирования частей реестра перед внесением изменений. Команда reg save абсолютно идентична команде REG BACKUP.
Команда reg restore восстанавливает указанный значимый элемент, раздел или куст реестра из файла, созданного с помощью команд reg save или reg BACKUP.
Команды reg save и reg backup поддерживают следующий синтаксис:
REG SAVE RegistryPath FileName [\\Machine] REG BACKUP RegistryPath FileName [\\Machine]
где:
RegistryPath — это путь к элементу или разделу реестра в формате
[ROOTKEY\]Key.
При этом параметр rootkey указывает корневой раздел реестра, который содержит раздел, подлежащий сохранению (по умолчанию этот параметр получает значение HKEY_LOCAL_MACHINE).
Корневой раздел реестра может указываться в сокращенном формате, с использованием одной из приведенных ниже аббревиатур:
HKEY_LOCAL_MACHINE - HKLM
HKEY_CURRENT_USER - HKCU
HKEY_CLASSES_ROOT - HKCR
HKEY_CURRENT_CONFIGURATION - HKCC
Key — этот параметр указывает полный путь к разделу реестра, расположенному под корневым разделом, обозначенным параметром rootkey.
FileName — данный параметр указывает имя файла (без расширения), в котором должны быть сохранены данные реестра. (На локальном компьютере этот файл сохраняется в текущем каталоге. При работе с удаленными компьютерами данный файл сохраняется в каталоге Windows.)
Machine — этот параметр указывает имя удаленного компьютера (по умолчанию используется локальный компьютер). При указании имен удаленных компьютеров следует использовать имена UNC (например: \\STATION1).
Примечание. На удаленных компьютерах доступны только разделы HKLM и HKU.
Команда reg restore поддерживает следующий синтаксис:
REG RESTORE FileName KeyName [\\Machine]
где:
FileName — имя подлежащего восстановлению файла (без расширения). Файл, указанный этим параметром, должен быть создан командами reg save ИЛИ REG BACKUP.
KeyName — имя раздела реестра в формате [ROOTKEY\]Key.
Key — полное имя раздела реестра, расположенного в разделе rootkey.
Machine — имя удаленного компьютера в формате ONC (по умолчанию будет использоваться локальный компьютер).
Возможности сервера сценария для работы с реестром
WSH предоставляет три метода для работы по редактированию реестра: для чтения, записи и удаления. Работа с ними очень проста, нужно только указывать ключи для записи, чтения или удаления.
Для записи в реестр служит метод RegWrite.
Синтаксис:
object.RegWrite strName, anyValue [strType]
где:
object - объект WshShell
strName – ключ или запись в реестре, куда производится запись
anyValue – записываемое значение
Необязательные параметры:
strType – тип данных, в которых производится запись
RegRead – служит для чтения данных из реестра
Синтаксис:
object.RegRead(strName)
где
object - объект WshShell
strName – ключ или запись для чтения
RegDelete – служит для удаления данных из реестра
Синтаксис:
object.RegDelete(strName)
где:
object - объект WshShell
strName – ключ или запись для удаления
Примечание. Когда после параметра strName, во всех методах стоит косая черта ("\"), то это подразумевает ключ, а не запись.
'Пример работы с реестром на VBScript
set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Popup "Создаем раздел"
WSHShell.RegWrite "HKCU\\MyRegKey\\", "Primer"
WSHShell.Popup "Создаем строковый параметр"
WSHShell.RegWrite "HKCU\\MyRegKey\\String", 1
WSHShell.Popup "Создаем параметр DWORD"
WSHShell.RegWrite "HKCU\\MyRegKey\\DWORD", 2, "REG_DWORD"
WSHShell.Popup "Создаем двоичный параметр"
WSHShell.RegWrite "HKCU\\MyRegKey\\Binary", 3, "REG_BINARY"
WSHShell.Popup "Удаляем все параметры"
WSHShell.RegDelete "HKCU\\MyRegKey\\String"
WSHShell.RegDelete "HKCU\\MyRegKey\\DWORD"
WSHShell.RegDelete "HKCU\\MyRegKey\\Binary"
WSHShell.Popup "Удаляем раздел"
WSHShell.RegDelete "HKCU\\MyRegKey\\"
Практическое задание
- Изучите структуру реестра с помощью утилиты Regedit. Запустить ее можно с помощью команды Пуск/Выполнить.
- Создайте сценарий, выполняющий поиск заданного пользователем расширения файла в реестре. Если соответствующий раздел в реестре имеется, вывести его значение. Использовать обработку исключительных ситуаций.
- Ознакомьтесь с командами утилиты reg. Запустить ее можно в режиме командной строки
- Создайте сценарий, выполняющий запуск утилиты Reg и выполнение резервного копирование части реестра, содержащей следующие сведения (см. табл.5 и номер варианта). Создать на рабочем столе ярлык для запуска сценария. Выводить информацию о том, какие сведения копируются, в какой файл. Использовать обработку исключительных ситуаций.
Таблица 5
№ варианта | Сведения о системе |
Настройки рабочего стола пользователя, на данный момент зарегистрированного в системе | |
Сведения о настройках для профиля пользователя по умолчанию | |
Данные об аппаратных средствах компьютера | |
Сведения о профиле пользователя | |
Данные о процессоре | |
Данные о программном обеспечении, установленном на компьютере | |
Данные о системной памяти компьютера | |
Данные о принтере, установленном для текущего пользователя |
Отчет должен содержать следующие сведения:
- Определение реестра
- Разделы реестра Windows 2000 и их назначение
- Последовательность действий для создания диска аварийного восстановления реестра Windows 2000.
- Текст сценария задания 2.