Введение в реестр Windows NT 4.0 и Windows 95

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

Идея реестра возникла не на пустом месте. Большинство прикладных программ для DOS сохраняют информацию о своей настройке в так называемые конфигурационные файлы. В качестве примера можно привести "севики" от игр, т.е. файлы с информацией о количестве оружия, боеприпасов, уровне текущего игрока. Они имеют двоичный формат и не совсем удобны для пользовательского редактирования. Этот формат неудобен и для программистов, при изменении его структуры приходится переписывать участок кода программы, отвечающий за сохранение пользовательских настроек в такой файл. Логичным продолжением явились ini (initialize) файлы. Информация хранится в них в текстовом виде. Легко модифицируется любым текстовым редактором, не оставляющим форматирующих символов. Стандарт на такие файлы ввела Windows в своих ранних версиях. Их формат очень простой: название секции в квадратных скобках, с новой строки название ключа и его значение. Операционная система (ОС) содержит сервисные функции для записи/чтения таких файлов (Get/SetPrivateProfileXXX). Несмотря на удобство администрирования, у них есть свои недостатки. Чтобы приложение "нашло" свой инициализационный файл он должен находиться в том же каталоге, что и приложение, или в каталоге, который указан в системной переменной PATH. Все каталоги туда не внесешь, поэтому каталог SYSTEM в Win3.X по мере инсталляции новых программ просто превращается в свалку таких файлов, где уже трудно понять, нужен этот файл или нет. Накладывалось ограничение и на размер самого ini-файла, он должен быть меньше 64 Кb. Поиск необходимого ключа происходит довольно медленно, системные функции Windows последовательно перебирают строки. Данные в ini-файле не имеют типа. При хранении числовых значений необходимо переводить строку в число при чтении и наоборот при записи. Это легко порождает ошибки, особенно при нестандартной записи, например: "Server Name=127.0.0.1". Неким прообразом реестра в современном понимании может служить Registration Database из Win3.1, она предназначена для регистрации файловых типов и управления ими. Информация хранится в файле REG.DAT, доступ к ней происходит из Regedit.exe.


Резервное копирование

При работе с реестром следует соблюдать максимальную осторожность, т.к. неверным значением ОС легко повредить или нарушить работу какой-либо ее составной части. Перед началом любой работы с реестром неплохо создавать его резервную копию. Если впоследствии возникнут какие-либо проблемы, ею можно воспользоваться для восстановления системы. В Win95 это файлы SYSTEM.DAT и USER.DAT в каталоге "C:\WINDOWS". При загруженной ОС копирование невозможно, т.к. она использует их в монопольном режиме. Что бы это обойти, воспользуйтесь загрузочной дискеткой с DOS, при условии, что Win95 стоит на FAT. С NT немного сложнее, копировать необходимо все файлы, без расширения, из каталога "%SystemRoot%\System32\config". Если система стоит на диске с NTFS, он под DOS невидим, в этом случае можно воспользоваться драйвером NTFSDOS.EXE (www.winternals.com). Гораздо сложнее при крахе системы перенести скопированные файлы обратно, в этом случае поможет только другая копия WinNT, в Win95 можно воспользоваться дискеткой с DOS. Если все-таки система потерпела крах, а резервной копии нет, можно использовать "последнюю удачную конфигурацию" (last known good). Это - копия файлов реестра, которую делает сама система. В случае Win95 - USER.DA0 и SYSTEM.DA0, в WinNT это файлы с расширением *.alt в каталоге "%SystemRoot% \System32\ config".

Распределение корневых ключей по файлам
  Windows NT Windows 95
System HKEY_LOCAL_MACHINE\SYSTEM USER.DAT, SYSTEM.DAT
Software HKEY_LOCAL_MACHINE\SOFTWARE  
Security HKEY_LOCAL_MACHINE\SECURITY  
Sam HKEY_LOCAL_MACHINE\SAM  
Default HKEY_USERS\.DEFAULT  
Userdiff HKEY_USERS\*остальное  
NTUSER.DAT HKEY_CURRENT_USER  


Редакторы

В составе WinNT и Win95 поставляется несколько программ для редактирования реестра. В NT входят две программы: традиционная, перешедшая из NT 3.51 - regedt32.exe и новая - regedit.exe, снабженная интерфейсом а-ля "Проводник". Она обладает лучшими средствами поиска, но не имеет доступа ко всем ключам и подключам. В Win95 только одна, regedit.exe. Она может работать в графическом и командном режиме. В командном режиме можно импортировать и экспортировать файлы сценария. Рассмотрим regedit из NT более подробно. В ней используются три основных типа данных: двойное слово (DWORD), строка (string) и двоичные значения (binary). Реестр поддерживает и другие, реже используемые типы данных: массивы строк, символическая ссылка в формате Unicode, но они доступны только через API реестра, поэтому не рекомендуется использовать regedit для этих типов данных. Работать с ней достаточно просто, развернуть раздел - кликнуть по узлу дерева (пиктограммка плюсик), команды поиска, удаления, переименования, создания ключей и подключей доступны из основного и всплывающего меню. Наиболее важные функции - это экспорт/импорт части или всего реестра в файл (импорт всего реестра невозможен). Редактор позволяет подключаться к реестру другого ПК, находящегося в сети, если у данного пользователя на то достаточно полномочий (Реестр->Подключить сетевой реестр). Одна из самых интересных особенностей - файлы сценария. Файл сценария - это текстовый файл с командами для regedit.exe. Такие файлы можно использовать для создания ключей, подключей и поименованных параметров. К сожалению, сценарии не позволяют удалять разделы. Файл сценария должен иметь расширение *.reg. Наиболее быстрый путь создания: стать на ветвь в regedit и выбрать в меню Реестр->Экспорт реестра. Будет создан шаблон, который затем легко отредактировать для собственных нужд. В заголовке файла должна стоять команда "REGEDIT4". Названия разделов заключаются в квадратные скобки, при создании подраздела его родительский раздел может и не существовать. Когда выполняется файл сценария, создается как родительский, так и все дочерние разделы. Значения по умолчанию (default) определяются через "@", например: [HKEY_CLASSES_ROOT\.cpp] с новой строчки @="cppfile". В сценариях можно использовать только три типа данных: числовые (DWORD), двоичные (hex) и строки. Вот пример их создания: "String"="full", "Integer"=dword:1999, "Binary"=hex:192,76,99,157, двойные кавычки обязательны. Запустить такой файл можно, импортировав в regedit или дважды щелкнув на нем в "Проводнике".

Создадим файл сценария, который меняет процесс индивидуальной регистрации в WinNT. При загрузке машины выводится окно с текстом, определенным в "LegalNoticeCaption" - заголовок и "LegalNoticeText" - само сообщение. Дальше происходит автоматическая регистрация в системе, используется пароль и имя пользователя, определенные в "DefaultPassword" и "DefaultUserName".

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"LegalNoticeCaption"="Hello"
"LegalNoticeText"="Welcome to Windows NT 4.0"
"AutoAdminLogon"="1"
"DefaultUserName"="my_name"
"DefaultPassword"="secret_password"

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

"LegalNoticeCaption"=""
"LegalNoticeText"=""
"AutoAdminLogon"="0"
"DefaultPassword"="secret_password" - удалить.

(Окончание следует)

Андрей ЛАПОУХОВ,
[email protected]

Версия для печатиВерсия для печати

Номер: 

04 за 1999 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!