Хитрости Windows 98. Для профессионалов

(фрагмент книги)

Автор: Д. Карп

Источник: Издательский дом "Питер"

Реестр


При изменении цветовой палитры системы, установке приложения или изменении настроек в Панели управления (Control Panel) соответствующая информация сохраняется в Реестре (Registry). Реестр (Registry) — это база данных всех параметров Windows и установленных приложений. Знание Реестра (Registry) необходимо для уверенной работы с Windows, устранения неисправностей и дополнительной настройки параметров.

Все типы файлов (см. раздел «Настройка контекстных меню» в главе 4), равно как и все параметры сетевых подключений, оборудования, программного обеспечения Windows и все индивидуальные параметры большинства установленных программ, хранятся в Реестре (Registry). Хотя отдельные параметры для каждого приложения и компонента Windows могут существенно отличаться, можно использовать некоторые приемы, позволяющие просмотреть незадокументированные параметры и обнаружить скрытые функциональные возможности. Особенно облегчает работу тот факт, что большинство параметров Реестра (Registry) имеют английские и русские названия, а не скрываются за тайными кодами и сокращениями. И хотя не следует считать это чем-то само собой разумеющимся, такой подход намного упрощает поиск параметров и устранение неполадок.


ВНИМАНИЕ
Изменяя параметры в Реестре (Registry), вы можете случайно — и безвозвратно! — отключить некоторые компоненты Windows, поэтому будьте предельно внимательны. Но если использовать в качестве меры предосторожности резервное копирование Реестра (Registry), то практически никакая беда вам не страшна. Более того, резервное копирование всей системы (этот процесс немного сложнее) служит гарантией того, что ваши бесценные данные или программы не пострадают, а также того, что вы не будете терять драгоценные часы и нервные клетки на восстановление системы вручную.


Знакомство с Реестром (Registry)

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

Редактор реестра (Registry Editor), который вызывается программой Regedit.exe из папки Windows, включен в состав операционной системы для того, чтобы вы могли просматривать и редактировать содержимое Реестра (Registry). Процесс обращения операционной системы Windows и приложений к Реестру (Registry) в большинстве случаев скрыт от глаз пользователя, но считывание и запись параметров и данных в Реестр (Registry) идет непрерывно.

Открыв Редактор реестра (Registry Editor), вы увидите окно, разделенное на две части <...> . На левой панели отображается древовидная структура, похожая на дерево каталогов (папок); на правой панели — содержимое ( параметры ) выделенной ветви дерева (так называемой папки). Но объекты левой панели не являются папками как таковыми, здесь просто используется знакомый и понятный способ организации и представления информации, хранящейся в файлах Реестра (Registry).

Редактор реестра используется для просмотра и редактирования Реестра (Registry)

Каждая ветвь, помеченная значком папки в Редакторе реестра (Registry Editor), называется разделом. Каждый раздел может содержать вложенные разделы и параметры. Каждый параметр содержит информацию ( значение ), которая хранится в Реестре (Registry). Разделы отображаются только в левой панели, параметры — только в правой.

В Редакторе реестра (Registry Editor) отображаются три типа параметров: Строковый параметр (String), Двоичный параметр (Binary) и параметр DWORD. Использование каждого из них определяется программой, которой они были созданы. Для отображения содержания раздела (папки) щелкните на ее названии в левой панели — в правой панели появятся входящие в этот раздел параметры и их значения. Чтобы раскрыть раздел и отобразить его подразделы, щелкните на значке [+] слева от папки или дважды щелкните на значке нужной папки.

Здесь важно отметить то, что параметр в верхней части правой панели имеет метку [По умолчанию] ([Default]). Параметр по умолчанию нельзя удалить, но его содержание можно стереть, что приведет к появлению значения [значение не присвоено] ([value not set]). В более простом Реестре (Registry) Windows 3.1 и Windows NT в каждом разделе имелся только один параметр. В Windows 95/98 и Windows NT 4/5, где раздел может содержать любое количество параметров, параметр по умолчанию наследует значение параметра из предыдущих версий. В большинстве случаев параметр по умолчанию не имеет какого-либо специального значения кроме того, которое может быть присвоено ему приложением, управляющим данным разделом.

В Редакторе реестра (Registry Editor) можно выполнять следующие операции:

  • добавлять новый раздел или параметр, предварительно найдя место для нового объекта, а затем в меню Правка (Edit) выбрав пункт Создать (New);
  • переименовывать любой имеющийся параметр и почти любой раздел, пользуясь той же процедурой, что и для переименования файлов: щелкните правой кнопкой мыши на объекте и выберите пункт Переименовать (Rename); дважды щелкните с интервалом на объекте или выделите объект и нажмите клавишу F2;
  • удалять раздел или параметр: выделите объект щелчком мыши и нажмите клавишу Del или щелкните на нем правой кнопкой мыши и выберите пункт контекстного меню Удалить (Delete);
  • искать текст в названиях разделов и параметров, выбрав в меню Правка (Edit) пункт Найти (Find);
  • обновлять отображаемую область Реестра (Registry), если одно из работающих приложений изменило значение, выбрав в меню Вид (View) пункт Обновить (Refresh).

В отличие от аналогичной процедуры с файлами в программе Проводник (Explorer), вы не можете перетаскивать разделы или параметры. Но, как и в Проводнике (Explorer), в Редакторе реестра (Registry Editor) используется понятие пути. В данном случае путь — это место в Реестре (Registry), описываемое несколькими вложенными параметрами, где находится некоторое значение. Например, если некоторый параметр находится в разделе Microsoft раздела более высокого уровня SOFTWARE, который, в свою очередь, находится в разделе HKEY_LOCAL_MACHINE, путь реестра будет выглядеть как HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft. Далее в этой книге, если параметр в Реестре (Registry) изменяется, всегда указывается путь реестра.

В Реестре существует шесть первичных, или «корневых», разделов (ветвей), в каждом из которых содержится информация, специфическая для каждого из этих разделов Реестра (Registry). Эти корневые разделы нельзя удалить, переименовать или переместить, так как они являются организующим началом Реестра (Registry). Давайте рассмотрим каждый из них.

  • HKEY_CLASSES_ROOT . В этой ветви содержатся все типы файлов, расширения имен файлов и информация об OLE (object linking and embedding — связывание и внедрение объектов) для приложений, поддерживающих эту технологию. Здесь находится специальный параметр CLSID (сокращение от Class ID — идентификатор класса), который содержит все зарегистрированные компоненты приложений и элементов управления ActiveX (блоки, из которых «строятся» приложения), установленных в системе. Несмотря на то что редактирование содержимого раздела HKEY_CLASSES_ROOT не вызывает затруднений, лучше ничего не трогать в ветви CLSID, так как не всегда можно понять, что кроется за тем или иным названием.
    Эта ветвь полностью является «зеркалом» раздела HKEY_LOCAL_MACHINE\ SOFTWARE\Classes, но отображается отдельно для простоты понимания и удобного доступа к ней.
  • HKEY_USERS. Эта ветвь включает в себя подраздел для пользователя, в настоящий момент работающего в системе, и обычно называющийся .default.
    В ветви каждого пользователя содержатся параметры для этого пользователя, например свойства Панели управления (Control Panel) и настройки программы Проводник (Explorer). Здесь также хранятся некоторые пользовательские настройки отдельных приложений. Ветвь HKEY_CURRENT_USER является «зеркалом» любого из разделов этой ветви — в зависимости от того, какой пользователь в настоящий момент работает на компьютере. Содержимое этой ветви описывается ниже.

ПРИМЕЧАНИЕ
Если в конфигурации системы задан только один пользователь, то отображается только ветвь .default. Если задано несколько пользователей, отображаются ветвь .default и ветвь текущего пользователя.
  • HKEY_CURRENT_USER. Эта ветвь указывает на часть раздела HKEY_USERS, означающую текущего пользователя. Таким образом, любое приложение может прочесть параметры для данного пользователя, не определяя, кто же из пользователей работает в настоящий момент.
    Параметры для текущего пользователя разделены на несколько категорий: AppEvents, Control Panel, InstallLocationsMRU, keyboard layout, Network, RemoteAccess и SOFTWARE. Наиболее полезная из этих ветвей — SOFTWARE — содержит разделы практически для каждого установленного на компьютере приложения, определяемые изготовителем. Так, параметры Windows находятся в разделе Microsoft.
  • HKEY_LOCAL_MACHINE. В этой ветви находится информация обо всем оборудовании и программном обеспечении вашего компьютера, не зависящая от того, кто из пользователей работает в настоящий момент.
    Будьте предельно осторожны при изменении любой информации, касающейся установленного оборудования, так как после ваших манипуляций некоторые устройства могут оказаться недоступными. Большинство параметров, находящихся в разделе Hardware, можно настроить при помощи Диспетчера устройств (Device Manager) (см. раздел «Общие приемы устранения неисправностей» в главе 6).
    Вызывает интерес подраздел Software ветви HKEY_LOCAL_MACHINE, поскольку в нем хранятся все данные, специфические для каждого конкретного приложения, установленного в системе. Этот раздел и раздел HKEY_CURRENT_USER\SOTWARE используются для хранения информации о каждом из приложений. Параметры, которые относятся к конкретным пользователям (даже если существует только один пользователь), например конфигурации панелей инструментов, находятся в разделе HKEY_CURRENT_USER, а параметры, не зависящие от того, кто работает с системой, в разделе HKEY_LOCAL_MACHINE.
    Здесь вы также найдете раздел Config — в нем содержатся пронумерованные профили оборудования (Hardware Profiles). HKEY_CURRENT_CONFIG является «зеркалом» текущего профиля оборудования.
  • HKEY_CURRENT_CONFIG. Эта ветвь указывает на раздел HKEY_LOCAL_ MACHINE\Config, соответствующий выбранной в настоящее время конфигурации оборудования. В большинстве случаев используется одна конфигурация; эта ветвь, как правило, является «зеркалом» раздела HKEY_LOCAL_MACHINE\Config\0001.
  • HKEY_DYN_DATA. Это единственная динамическая ветвь Реестра (Registry). Другими словами, все остальные ветви являются статичными и хранятся на жестком диске, а эта ветвь создается при каждом запуске Windows и хранится в оперативной памяти. В ней содержатся драйверы различных устройств (VxD), в том числе самонастраивающихся устройств Plug-and-Play, установленных в системе, которые отображаются в разделе Config Manager. Эта ветвь практически не обсуждается в материале книги.
    HKEY_USERS и HKEY_LOCAL_MACHINE — две единственные оригинальные корневые ветви, хранящиеся на жестком диске. За исключением HKEY_DYN_DATA, корневые ветви представляют собой просто «зеркала» разных частей первых двух ветвей, хранящихся на жестком диске в файлах User.dat и System.dat соответственно. Знание составляющих Реестра (Registry) требуется только для создания резервных копий и операций по восстановлению системы (см. раздел «Создание резервной копии Реестра (Registry)» данной главы).

    Хитрости

    Теперь, когда вы познакомились с Реестром (Registry) и Редактором реестра (Registry Editor) поближе, можно начинать пользоваться ими для диагностики проблем, использования новых функций и свойств, а также для настройки операционной системы и установленного программного обеспечения. Первая тема, обсуждаемая ниже — «Создание резервной копии Реестра (Registry)», — представляется наиболее важной, так как с помощью копии Реестра (Registry) можно устранить почти все проблемы, которые могут появиться в случае изменения параметров Реестра. Далее в этом разделе содержится информация, достаточная для выполнения любой операции, связанной с Реестром (Registry), из тех, которые описаны в этой книге.

    Создание резервной копии Реестра (Registry)

    Так как Реестр (Registry) хранится на жестком диске в виде отдельных файлов, можно создать резервную копию простым копированием. Но файлы Реестра редко умещаются на одну дискету, поэтому большинство программ создания резервных копий для Windows 95/98 (например, сервисная программа Архивация данных — Backup, входящая в состав Windows) имеют функцию создания резервных копий, в том числе и Реестра (Registry). Я рекомендую вам поближе ознакомиться с этой возможностью.
    При запуске Windows информация из Реестра (Registry) загружается в оператив- ную память. Во время работы Windows некоторые из изменений, вносимых в Реестр (Registry), могут физически не записываться на диск до тех пор, пока вы не выключите компьютер, в то время как другие (например, те, которые делаются с помощью Редактора реестра) записываются незамедлительно. Поэтому, если вы внесли существенные изменения в Реестр (Registry), я рекомендую вам перезагрузить Windows перед созданием резервной копии. Поступая таким образом, вы будете уверены в том, что в файлах на жестком диске содержится самая последняя информация.
    Если ваша система не настроена для нескольких пользователей, Реестр (Registry) хранится в двух скрытых файлах каталога Windows — User.dat и System.dat. Если пользователей несколько, файл User.dat для каждого из них хранится в папке \Windows\Profiles\Имя_пользователя (где Имя_пользователя соответствует реальному имени пользователя, зарегистрированному в системе).
    Эти файлы являются скрытыми, а это значит, что при попытке их просмотра программой Проводник (Explorer), в которой используются параметры по умолчанию, вы этих файлов не увидите. Для просмотра скрытых файлов в меню Вид (View) Проводника (Explorer) выберите пункт Свойства папки (Folder Options), откройте вкладку Вид (View), установите флажок Показать все файлы (Show all files) и щелкните на кнопке ОК.

    Используйте утилиту Windows Проверка реестра (Registry Checker)

    Новой утилитой в составе Windows 98 является Проверка реестра (ScanReg) — простая программа, которая обеспечивает выполнение нескольких задач по поддержке Реестра (Registry). Windows автоматически запускает ScanReg при загрузке, и эта программа выполняет резервное копирование файлов Реестра, проверяет их на наличие ошибок и при необходимости выполняет их оптимизацию.
    Хотя программа ScanReg выполняется автоматически и достаточно явно, вы можете самостоятельно проверить и создать резервные копии Реестра (Registry) в любое время. Хотя такой интерактивный режим не является строго обязательным, он позволяет выполнить проверку или создать резервные копии Реестра (Registry) без перезагрузки Windows и дальнейшей проверки новых параметров конфигурации (см. раздел «Самостоятельное создание резервных копий» данной главы).
    Вы не найдете программу Проверка реестра (Registry Checker) в Главном меню (Start Menu); для запуска программы ScanReg вручную выберите пункт Выполнить (Run) Главного меню (Start Menu) и введите scanreg.exe. Существует версия этой программы для DOS (scanreg.exe), но если вы попытаетесь запустить ее из-под Windows, она автоматически переключится на своего «двойника» ОС Windows.
    По умолчанию ScanReg обеспечивает создание пяти отдельных резервных копий файлов Реестра (Registry) и некоторых не менее важных файлов, в том числе win.ini и system.ini. Программа сохраняет копии в пяти отдельных файлах с расширением . cab : rb000.cab , rb001.cab и т. д. Однако копии файлов Реестра (Registry), в которых обнаружены ошибки, ScanReg сохраняет в виде файла Rbbad.cab.
    Чтобы найти самый свежий файл резервной копии, просмотрите даты этих файлов (в программе Проводник (Explorer) используйте режим просмотра Таблица — Details, в DOS введите команду DIR) , так как их номера — не самый надежный показатель. Файлы . cab сохраняются в скрытой папке \Windows\sysbckup, которую вы можете просмотреть только в том случае, если задано отображение скрытых файлов.
    Количество одновременно создаваемых резервных копий задается в файле Scanreg.ini, находящемся в каталоге \Windows, — в строке MaxbackupCopies=5 число 5 заменяется нужным значением. Если число больше 5, то это облегчит поиск хорошей копии файла в случае возникновения серьезной проблемы, но при этом потребуется больше места на диске. Размер резервных файлов Реестра (Registry) зависит от общего размера файлов Реестра, а также от эффективности сжатия. Если предположить, что два файла Реестра занимают около двух мегабайт (эта величина может значительно варьироваться в зависимости от числа установленных приложений и других факторов) и что Windows сможет обеспечить их сжатие на 50 %, то при использовании параметра по умолчанию (5 резервных файлов) их суммарный размер будет около 5 Мбайт (5x2 Мбx50 %). Количество файлов, создаваемое по умолчанию, это своего рода «золотая середина», которая подходит для большинства конфигураций. Уменьшите это значение, если хотите сохранить дополнительное место на диске, и, наоборот, увеличьте его, если вам много приходится возиться с настройкой системы и вы считаете, что эти файлы вам пригодятся. Если вы пользуетесь какой- нибудь другой процедурой создания резервных копий и если место на диске имеет для вас большое значение, полностью отключите автоматическую архивацию, для чего в файле Scanreg.ini измените строку Backup=1 на Backup=0.
    В разделе «Восстановление поврежденного Реестра (Registry)» данной главы более подробно рассказывается о работе с резервными копиями утилиты Проверка реестра (Registry Checker). Программа ScanReg также используется для оптимизации Реестра (Registry) в случае необходимости (см. раздел «Упаковка Реестра (Registry)» данной главы).

    Дополнительные возможности утилиты Проверка реестра (Registry Checker)

    Программу ScanReg можно настроить так, чтобы создавались резервные копии файлов наряду с теми, которые входят в Реестр (Registry), но это ни в коем случае нельзя считать альтернативой полной архивации системы. Этот вариант используется для сохранения предыдущих версий важных системных файлов и облегчает работу с ними, если что-нибудь случится. Конечно, если выйдет из строя жесткий диск или ваш компьютер украдут, эти копии будут безвозвратно утеряны, как и все остальное. Поэтому рекомендуется делать резервные копии Реестра (Registry) и важных файлов конфигурации на дискетах или лентах. Так как размеры резервных копий меньше файлов Реестра, вполне возможно, что они поместятся на одну стандартную дискету, но это совсем не обязательно.
    Помимо двух файлов Реестра System.ini и Win.ini, программа ScanReg добавляет в резервную копию любые файлы, указанные в файле Scanreg.ini:

    Files = c:\msdos.sys, c:\logo.sys
    Files = c:\autoexec.bat, c:\config.sys
    Files = c:\windows\bob.pwl

    Можно либо сгруппировать несколько файлов в одной строке, либо указать каждый файл в отдельной строке, как показано в примере. Параметр dir code в файле . ini можно проигнорировать: он используется для указания файлов в ключевых каталогах и избавляет от необходимости указывать имена этих каталогов. Это полезно только в том случае, если вы записываете один файл для использования на нескольких компьютерах.
    Из всех файлов, указанных в примере, при создании резервных копий вы долж- ны обязательно указать только один файл — Msdos.sys. Остальные можно включить в список или пропустить по своему усмотрению. Например, Logo.sys — это загрузочная заставка (см. главу 2), но и ее можно заархивировать, если вы посвятили много времени изменению или разработке ее дизайна и опасаетесь, что при следующей модернизации Windows этот файл будет перезаписан. Спокойно включайте в список любые файлы . ini и файлы конфигураций, которые могут пригодиться, но помните о том, что чем больше файлов вы архивируете, тем дольше у вас займет этот процесс (а загрузка может стать крайне медленной).

    Самостоятельное создание резервных копий

    Утилита ScanReg используется для сохранения нескольких копий Реестра (Registry) и помогает в том случае, если один из этих файлов поврежден, но она не поможет избежать настоящей аварии. Если жесткий диск «посыпался» или на нем поселился вирус, если ваш компьютер украли или вы уронили его с седьмого этажа, вряд ли вам помогут резервные копии.
    Создание резервных копий Реестра (Registry) — это всего лишь копирование двух файлов Реестра (Registry) и сохранение полученных копий на каком-либо носителе вне компьютера. Если вы регулярно производите архивацию всей системы, например, с помощью стриммера или какого-нибудь другого устройства, ваша программа архивации должна также поддерживать архивацию Реестра (Registry).
    Самое простое — сначала найти оба файла: либо перейдите в папку Windows, либо воспользуйтесь функцией системы Найти (Find) и укажите * .dat. Не забывайте, что эти файлы являются скрытыми, поэтому вы не увидите их, если используете параметры отображения, заданные по умолчанию. Чтобы увидеть их в Windows, прочтите, как это делается, в начале данного раздела. Чтобы увидеть их в DOS, используйте команду ATTRIB (см. приложение 2).
    Выделите оба файла, щелкните на одном из них правой кнопкой мыши и выберите пункт Свойства (Properties). В диалоговом окне будет указан общий размер этих файлов. Если он не превышает 1,4 Мбайта, вы можете просто перетащить файлы на дискету. Если размер больше и файлы не умещаются на одной дискете, заархивируйте их специальной программой сжатия, например WinZip ( http://www.winzip.com) . Если у вас есть стриммер или любой другой съемный накопитель (Syquest, Zip, Jazz), это еще лучше, но преимущество сохранения файлов на дискете заключается в том, что для доступа к ней не требуется никаких специальных драйверов устройств.
    Заметьте, что файлы автоматизированного создания резервных копий, имеющие расширение . cab (см. описание выше), уже изначально сжаты, поэтому они занимают меньше места и их удобнее копировать на дискеты или другие носители. Однако недостатком файлов . cab является то, что находящиеся в них файлы могут быть созданы несколько дней назад, и если вы ярый сторонник самых свежих копий, то это вас не устроит.
    Если вы не производите регулярную архивацию системы, приучите себя делать резервные копии Реестра (Registry) хотя бы раз в неделю — тогда, если система вдруг выйдет из строя, вам не придется долгими часами корпеть над ней.

    Автоматическое создание резервных копий на внешних носителях

    Утилита Проверка реестра (Registry Checker) автоматически архивирует Реестр (Registry) при каждом включении компьютера, но не чаще одного раза в сутки. Но если вы достаточно прилежны и создаете резервные копии вручную, вы также выиграете в том, что сможете автоматизировать и этот процесс. Если вы пользуетесь программой для создания резервных копий всей системы (очень рекомендую), то у вас, как правило, есть возможность применения встроенного планировщика заданий, входящего в большинство таких программ.
    В следующем примере пакетный файл DOS (см. главу 9 и приложение 2) совместно с утилитой PKZIP (приложение 6) используются для сжатия последних версий файлов Реестра и объединения их в единый архив и дальнейшего копирования его на гибкий диск. Откройте простой текстовый редактор, например Блокнот (Notepad), и введите текст, приведенный в примере 3.1.

    Пример 3.1. Простой пакетный файл для автоматизации создания резервных копий Реестра вручную
    @echo off
    format a: /u/q
    pkzip -& -whs a:\regback.zip c:\windows\system.dat c:\windows\user.dat

    Вместо c:\windows укажите реальное имя каталога, в котором хранится операционная система Windows 98. Если копирование производится на другой дисковод, вместо a : укажите букву, назначенную этому дисководу.
    Первая строка отключает вывод на экран содержимого файла. Во второй строке выполняются два действия: предлагается вставить гибкий диск и отформатировать его, то есть удалить все его содержимое (если на диске что-то записано). Третья строка задает выполнение двух процедур: сжатие двух файлов Реестра (Registry) и копирование их на дискету. Параметр - & указывает программе PKZip, что при необходимости следует использовать более одной дискеты, а параметр – whs (он является обязательным и зависит от регистра — не набирайте его заглавными буквами) сообщает программе о необходимости включать системные и скрытые файлы.
    Чтобы добавить в резервную копию дополнительные файлы, перечислите их в конце строки pkzip. О других важных системных файлах рассказывается в подразделе «Используйте утилиту Windows Проверка реестра (Registry Checker)» данного раздела.

    Восстановление поврежденного Реестра (Registry)

    Существует несколько способов восстановления поврежденного Реестра (Registry). Выбор зависит от серьезности проблемы и от того, насколько тщательно вы подходили к созданию резервных копий.
    Если вы находите проблему в Реестре (Registry), в первую очередь запусти- те программу Проверка диска (Scandisk). Можно запустить как версию программы для DOS — scandisk.exe, так и версию для Windows — scandskw.exe. Проверьте диски и файлы на наличие ошибок, так как проблемы чаще встречаются именно в них, а не в Реестре. Если вы не можете загрузить Windows и вынуждены работать с версией Scandisk для DOS, необходимо сначала вызвать приглашение DOS. Для этого после включения компьютера, когда начнется процесс загрузки, нажмите клавишу F8, затем сочетание клавиш Shift+F5. После приглашения DOS введите команду scandisk. Если в компьютере установлено несколько дисков, следует проверить их все.
    Лишь в том случае, если после работы программы Scandisk проблема не решается, переходите к восстановлению Реестра (Registry). К сожалению, вы можете только заменить поврежденный файл Реестра его резервной копией. Повреждение Реестра (Registry) бывает двух видов, для устранения каждого из них используются резервные копии.

    • Один из файлов Реестра (Registry) действительно поврежден физически, то есть Windows не может нормально прочесть его с жесткого диска, или содержимое файла было каким-то образом нарушено. Это может произойти в результате аварийного сбоя системы, отключения электропитания во время записи файла, физической ошибки на жестком диске или даже воздействия вируса. Если программа Проверка диска (Scandisk) не может устранить проблему, файл необходимо заменить наиболее свежей резервной копией. Чем чаще вы делаете резервное копирование, тем более свежими будут резервные файлы.
    • Файлы Реестра (Registry) остаются неизменными, но один или несколько параметров Реестра вызывают проблемы в работе Windows или устройств, подключенных к компьютеру. Это может быть вызвано программой, имеющей ошибки, которая произвела запись в Реестр (Registry), неправильным драйвером устройства или, что случается чаще всего, ошибочными действиями пользователя. Обычно диагностировать ошибку очень сложно, поэтому самым простым решением представляется замена Реестра (Registry) его резервной копией. Поэтому перед тем, как что-нибудь менять в Реестре (Registry), создайте его копию. Заметьте, что наличие нескольких последовательно сделанных копий облегчает устранение подобных проблем; если самая последняя резервная копия также содержит ошибочную запись, порождающую проблемы, воспользуйтесь предыдущей копией.

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

    Восстановление с резервных копий программы Проверка реестра (Registry Checker)

    Если при сканировании Реестра (Registry) на наличие ошибок программа Проверка реестра (Registry Checker) во время загрузки Windows обнаруживает ошибку, предполагается, что она должна автоматически восстановить самую свежую резервную копию и вывести сообщение. Но иногда в результате этой процедуры не происходит восстановления с корректной резервной копии или программа ScanReg просто не может идентифицировать проблему. В этом случае вам придется восстанавливать Реестр (Registry) самостоятельно. Давайте посмотрим, как это делается.

    • Если вы работаете с Windows, дважды щелкните на наиболее свежем файле с расширением . cab. Файлы резервных копий типа . cab находятся в скрытой папке \Windows\sysbckup\. Если папка не отображается, задайте параметры Windows таким образом, чтобы скрытые файлы отображались. Для этого в меню Вид (View) программы Проводник (Explorer) выберите пункт Свойства папки (Folder Options), откройте вкладку Вид (View) и включите переключатель Показать все файлы (Show all files). Отыщите самые свежие резервные файлы по датам (для просмотра используйте режим Таблица — Details), так как порядковые номера не всегда являются надежным критерием.
      Чтобы извлечь файл из файла . cab, просто перетащите его из окна, которое появляется при двойном щелчке на файле . cab, в папку Windows. Проделайте эту процедуру для обоих файлов Реестра — System.dat и User.dat. Если появится запрос на замену существующего файла, щелкните на кнопке Да (Yes).
    • Если вы работаете в DOS (а чаще всего так и бывает, потому что повреждения Реестра не дают загрузиться Windows), для запуска DOS-версии программы Проверка реестра (Registry Checker) введите команду scanreg/restore. На экране появится список последних пяти резервных копий; в зависимости от - конфигурации копий может быть больше или меньше. Выделите самый свежий файл и щелкните Восстановить (Restore). Если восстановление с данной копии не решило проблему, повторите вышеописанные шаги, но в этот раз выберите файл, созданный раньше.
      Когда вы пользуетесь DOS-версией программы Проверка реестра (Registry Checker), все файлы в текущем наборе резервных копий будут восстановлены — вы не можете указать, какие файлы использовать для восстановления, а какие нет. Если вы знаете, какой файл поврежден, то не имеет смысла перезаписывать все файлы более старыми версиями. Чтобы извлечь один файл из набора резервных копий, не затрагивая остальных, введите команду:
      extract c:\windows\sysbckup\rb003.cab c:\windows\system.dat
      В этом примере извлекается файл System.dat из резервной копии rb003, который затем помещается в каталог Windows. Если операционная система на вашем компьютере хранится в другой папке, вместо c:\windows укажите ее реальное имя и путь к ней. Введите Extract /? для получения информации о команде. Подробнее о командах DOS рассказывается в приложении 2.
    Ручное восстановление с резервных копий

    Если вы самостоятельно создавали резервные копии, как описано в предыдущем разделе, вам остается всего лишь записать их поверх поврежденных файлов и перезагрузить компьютер. Это делается так.

    1. Если, предположим, вы не можете загрузить Windows, после включения компьютера нажмите клавишу F8, а в начале загрузки Windows сочетание клавиш Shift+F5. Появится приглашение DOS.
    2. Затем снимите атрибуты «системный» (system) и «скрытый» (hidden) с файлов Реестра (Registry), чтобы их можно было перезаписать. Для этого в приглашении DOS введите:
      attrib –r –s –h c:\windows\system.dat
      attrib –r –s –h c:\windows\user.dat
    3. После этого скопируйте резервные файлы поверх оригинальных файлов. Если при создании резервных копий вы записали их на дискету, введите:
      copy a:\system.dat c:\windows
      copy a:\user.dat c:\windows
      Или, если для создания резервных копий вы использовали пакетный файл, описанный в разделе «Автоматическое создание резервных копий на внешних носителях» данной главы, введите:
      pkunzip a:\regback.zip c:\windows
    4. Не забудьте заменить c:\windows на реальный путь и имя папки, в которой хранится Windows, и при необходимости вместо a: указать точное обозначение дисковода для гибких дисков.
    5. По окончании процедуры перезагрузите компьютер для проверки функциональности восстановленных файлов Реестра (Registry).
    Замечания и полезная информация

    Создание резервных копий Реестра (Registry) является простой процедурой. Но она не обеспечивает того уровня надежности, который гарантирует резервное копирование всей системы (см. главу 6).
    При установке Windows 98 файл System.1st помещается в корневой каталог загрузочного диска. Он представляет собой копию файла System.dat, когда Windows впервые устанавливалась на компьютер. Если вы когда-нибудь будете переустанавливать Windows поверх существующей версии, этот файл станет последней версией файла System.dat в том виде, каким он был до переустановки системы. Если вы потеряли резервные копии, а в Реестре (Registry) возникли проблемы, последним средством является переименование этого файла в System.dat и его копирование поверх поврежденного файла Реестра. Хотя в нем и не сохраняются ваши последние настройки, вполне возможно, что вы сможете запустить Windows без ее переустановки.

    Использование «заплаток» Реестра (Registry)

    Реестр можно отредактировать с помощью Редактора реестра (Registry Editor) (см. раздел «Знакомство с Реестром (Registry)» данной главы). Внести изменения в Реестр можно также с помощью «заплаток». «Заплатка» Реестра — это текстовый файл с расширением . reg, в котором содержится один и более разделов или параметров Реестра (Registry). Если дважды щелкнуть на файле типа . reg, «заплатка» будет добавлена в Реестр, то есть ее содержание будет добавлено в содержание Реестра. Это удачное решение для совместного использования или создания резервных копий небольших фрагментов Реестра (Registry), которые могут применяться как на вашем, так и на любом другом компьютере — ведь это гораздо проще, чем вручную редактировать Реестр (Registry).

    Создание «заплатки» Реестра (Registry)
    1. Откройте Редактор реестра (Registry Editor) и выберите ветвь (раздел), которая станет источником «заплатки». Эта ветвь может быть как одной из корневых, так и находиться на десяток уровней ниже. В «заплатки» входит не только выбранная ветвь, но и все параметры и значения этой ветви и ее вложенных разделов. Не выбирайте ничего сверх того, что вам действительно нужно.
    2. В меню Реестр (Registry) выберите пункт Экспорт файла реестра (Export Registry File), введите имя файла и подтвердите выбор. Все выбранные параметры и вложенные разделы выделенной ветви будут скопированы в «заплатку». Убедитесь, что новый файл имеет расширение . reg.
    Редактирование «заплатки» Реестра (Registry)

    Так как «заплатки» являются обычными текстовыми файлами, их можно редактировать любым простым текстовым редактором, таким как Блокнот (Notepad). Содержание «заплатки» Реестра (Registry) выглядит примерно так, как показано в примере 3.2.

    Пример 3.2. Содержание «заплатки» Реестра HKEY_CLASSES_ROOT\.txt
    REGEDIT4
    [HKEY_CLASSES_ROOT\.txt]
    @="txtfile"
    "Content Type"="text/plain"
    [HKEY_CLASSES_ROOT\.txt\ShellNew]
    "FileName"="template.txt"

    Первая строка — REGEDIT4 — сообщает Windows, что этот файл действительно является «заплаткой», поэтому не удаляйте эту строку. Остальные строки «заплатки» — это названия разделов и их параметры. Названия разделов помещены в скобках и представляют собой полные пути раздела. За ними следуют параметры для каждого раздела. Сначала указывается имя параметра, затем идет знак равенства, а потом указываются данные для каждого параметра. Имена параметров и данные (значения) параметров заключаются в кавычки. Имя параметра @ сообщает Редактору реестра (Registry Editor), что данные параметра следует поместить в параметр [по умолчанию] ([Default]).
    Если вы разбираетесь в конкретной информации, находящейся в созданной вами «заплатке» Реестра (Registry), вы можете отредактировать ее по своему желанию и сохранить. Но помните о том, что внесение изменений в содержание «заплатки» не влечет за собой изменений в самом Реестре (Registry). Изменения вступят в силу только тогда, когда ваша «заплатка» будет установлена.

    Добавление «заплатки» в Реестр (Registry)
    1. Если вы устанавливаете «заплатку», содержащиеся в ней разделы и параметры будут добавлены в Реестр (Registry). Для ее установки дважды щелкните на файле «заплатки» (он имеет расширение . reg) в окне программы Проводник (Explorer). В ответ на предупреждение Добавить в реестр информацию из C:\Temp\Test.reg? (Are you sure you want to add the information in C:\Temp\Test.reg to the Registry?) ответьте Да (Yes).
    2. После добавления «заплатки» в Реестр (Registry) появится примерно такое сообщение: Информация из C:\Temp\Test.reg успешно введена в реестр (Information from C:\Temp\Test.reg has been successfully entered into the Registry).
    3. Если у вас открыта программа Редактор реестра (Registry Editor), можно также выбрать пункт Импорт файла реестра (Import Registry File) в меню Реестр (Registry), указать «заплатку» и подтвердить ее добавление. Не рекомендуется устанавливать «заплатку» двойным щелчком на файле, в котором она находится, если открыт Редактор реестра (Registry Editor).
    4. Разделы и параметры, которых не было в Реестре (Registry), будут добавлены в него. Если раздел, указанный в «заплатке», существует в Реестре (Registry), то последний будет обновлен в соответствии с указанным в «заплатке». Если в Реестре (Registry) задан какой-либо параметр, он будет заменен указанным в «заплатке», но при этом любые значения существующего раздела, не указанные в «заплатке», останутся без изменений.
    Замечания и полезная информация

    Создание резервных копий Реестра (Registry) — это надежный способ обезопасить себя от ошибок, которые могут иметь место при установке «заплаток».
    Если вы создаете «заплатку» на своем компьютере для установки на другом компьютере, убедитесь в том, что все названия дисков и папок исправлены в соответствии с файловой структурой другого компьютера. Например, если в «заплатке», созданной на вашем компьютере, указан путь C:\Моя_папка\моя_программа.exe, то, возможно, вам придется изменить его на тот путь, который используется в другом компьютере: D:\Ее_папка\моя_программа.exe.
    Хотя Редактор реестра (Registry Editor) имеет функцию поиска, у него нет функции поиска и замены. Если вы хотите изменить параметры раздела, например, при перемещении приложения с одного диска на другой, можете воспользоваться «заплаткой». Создайте «заплатку» для соответствующего раздела и, пользуясь своим любимым текстовым редактором, используйте функцию «найти и заменить» для изменения параметров (скажем, заменить все случаи с:\большая_программа на е:\большая_программа). Когда «заплатка» будет установлена, эти параметры изменятся. Но будьте осторожны, так как вы можете изменить множество параметров, сами того не осознавая. Дополнительная информация по этому вопросу содержится в разделе «Эффективный поиск в Реестре (Registry)» данной главы.
    Чтобы при установке «заплатки» на экране не появлялись два никому не нужных запроса о подтверждении (например, при использовании пакетных файлов DOS или файлов VBScript), устанавливайте их программой regedit.exe с параметром /s:
    regedit /s c:\путь\файл_реестра.reg
    В главе 9 рассказывается о Сервере сценариев Windows (Windows Scripting Host), там же описывается методика автоматизации изменения Реестра (Registry).

    Поиск нужного раздела Реестра (Registry)

    Самое большое препятствие при внесении изменений в Реестр (Registry) — не только найти параметр, но и знать, как его изменить. Иногда способ очевиден: ставим единицу вместо нуля или меняем одно имя каталога на другое. Однако чаще вам встретятся длинные, ничего для вас не значащие цепочки цифр и букв.
    Для примера рассмотрим, как отключить идиотскую стрелку «Начните работу с нажатия этой кнопки» (Click here to begin), которая появляется сразу после загрузки Windows 98, и как создать соответствующую «заплатку» Реестра (Registry).
    Идея состоит в том, чтобы делать « моментальные снимки» (создавать «заплатки») всего Реестра (Registry) до и после внесения изменений с помощью программы Проводник (Explorer) или другой программы. Сравнивая оба «снимка», можно будет без труда определить, какие значения изменились.

    1. Начните с открытия Редактора реестра (Registry Editor) и выберите ветвь HKEY_CURRENT_USER. В меню Реестр (Registry) выберите пункт Экспорт файла реестра (Export Registry File) и экспортируйте всю ветвь в файл под именем, например, User1.reg. Сохраните файл в каком-нибудь удобном месте, допустим, на Рабочем столе (Desktop). Затем выберите ветвь HKEY_LOCAL_MACHINE и повторите процедуру. Файл можно назвать S ystem.1.reg.
    2. Теперь сделайте желаемое изменение. Для этого дважды щелкните на значке TweakUI в Панели управления (Control Panel) (см. приложение 1) и откройте вкладку Explorer (Проводник). Здесь нас интересует пункт Animated «Click here to begin» (if room) — Стрелка «Начните работу с нажатия этой кнопки» (если есть место). Снимите этот флажок, а если он и так снят, то снимите другой флажок1 для чистоты эксперимента. По окончании щелкните на кнопке ОК.
    3. Сразу же перейдите в Редактор реестра (Registry Editor) и снова экспортируйте ветви HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE в новые файлы, допустим, User2.reg и System2.reg.
      Теперь у нас есть «моментальные снимки» всего Реестра (Registry), сделанные до и после внесения изменений. Важно сделать такие «снимки» сразу - после изменений, чтобы другие тривиальные параметры, такие как изменения позиции окна программы Проводник (Explorer), не записывались с нужными нам изменениями.
    4. Теперь остается только отфильтровать измененные данные в удобный формат. В состав Windows входит утилита DOS для сравнения файлов File Compare (fc.exe в каталоге \windows\command), которая поможет найти отличия между файлами, созданными до и после внесения изменений. Кроме этой утилиты есть подобные ей, но более мощные программы для Windows от других производителей, например UltraEdit-32 ( http://www.ultraedit.com) . В командной строке введите:
      fc user1.reg user2.reg >user.txt
      fc system1.reg system2.reg >system.txt
      В этом случае в новые текстовые файлы будут записаны только различия между сравниваемыми файлами: в файл user.txt изменения в ветви HKEY_CURRENT_USER, в файл system.txt — изменения в HKEY_LOCAL_MACHINE. Файл user.txt будет выглядеть примерно так:
      Сравнение файлов user1.txt и user2.txt
      ****** user1.txt
      "NoFileMenu"=dword:00000000
      "NoStartBanner"=hex:00,00,00,00
      "NoRecentDocsHistory"=hex:01,00,00,00
      ****** user2.txt
      "NoFileMenu"=dword:00000000
      "NoStartBanner"=hex:01,00,00,00
      "NoRecentDocsHistory"=hex:01,00,00,00
      ******
      Из этого листинга видно, что изменилось только значение NoStartBanner (да, трудно догадаться по имени, о чем идет речь), которое находится в разделе user. В раздел system изменения не были записаны, поэтому файл system.txt окажется пустым. Заметьте также, что строки до и после различающихся строк также включены в состав файла user.txt, но это делается только для того, чтобы их легче было найти, поэтому такие строки можно спокойно удалить.
    5. Затем необходимо преобразовать выходные данные программы File Compare в работоспособную «заплатку» Реестра (Registry). Для этого в файле user.txt сначала надо удалить все строки, кроме второй от конца (именно в ней записано изменение — она относится к файлу, который был создан после внесения изменений в Реестр).
      Вы обратили внимание, что некоторые изменения, например удаление ветви или параметра, невозможно внести в «заплатку» Реестра. Так, при помощи утилиты TweakUI можно удалить значок с Рабочего стола (Desktop) или один из пунктов меню Создать (New) программы Проводник (Explorer), причем будет удален и сам раздел, но вот уделить раздел при помощи «заплатки» вам не удастся. Более подробная информация находится в разделе «Автоматизация удаления объектов Реестра (Registry)» данной главы.
    6. Далее следует найти в одном из оригинальных файлов-«заплаток» Реестра (подойдут «снимки», сделанные либо до, либо после внесения изменений) путь для раздела, в котором находится измененная строка. Этим путем является строка, заключенная в квадратные скобки и находящаяся сразу над измененной строкой. В нашем примере строка NoStartBanner находится в разделе [HKEY_CURRRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer].
    7. Скопируйте всю строку в квадратных скобках и вставьте ее в файл u ser.txt сразу над измененной строкой, как показано ниже. Наконец, вставьте текст REGEDIT4 и пустую строку после него в начало файла. У вас должно получиться приблизительно следующее:
      REGEDIT4

      [HKEY_CURRRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
      "NoStartBanner"=hex:01,00,00,00
    8. Сохраните файл под новым именем, например User-final.reg. Если параметры, которые вы изменили, привели к изменениям в разделе HKEY_LOCAL_MACHINE, повторите вышеописанные шаги применительно к файлу system.txt.
    9. Теперь эту «заплатку» можно устанавливать на любом компьютере.
    Замечания и полезная информация

    Предлагаемое решение поможет вам найти нужные разделы и параметры, связанные с той или иной установкой Windows или приложения, но оно не совсем подходит для поиска разделов, которые не имеют соответствующего «интерфейса». Эта хитрость очень удобна, например, в тех случаях, когда вы хотите создать «заплатку» Реестра (Registry) для группы настроек, которую затем можно использовать на других компьютерах. И тогда работа по настройке всех машин, установленных, скажем, в компьютерном зале, не будет такой утомительной.
    Но в этом подходе кроются «ловушки», и самая неприятная из них заключается в том, что утилита File Compare обнаруживает больше различий, чем требуется для какого-либо изменения в Реестре (Registry). Важно внимательно просмотреть каждый раздел в получившейся «заплатке» и определить, действительно ли он нужен. В нашем примере после завершения экспортирования первой «заплатки» в открытую Панель управления (Control Panel) можно обнаружить в программе Проводник (Explorer) зашифрованную информацию Реестра (Registry), которая сообщает о позиции окна Панели управления (Control Panel). Конечно же, эта информация не является необходимой.
    В главе 9 рассказывается о Сервере сценариев Windows (Windows Scripting Host), там же описывается методика автоматизации изменения Реестра (Registry).
    Отмена. В процессе выполнения вышеописанной процедуры всегда разумно создавать соответствующую «заплатку» для отмены изменений, вносимых в Реестр (Registry). В нашем примере изменения содержатся в «заплатке», созданной после их внесения (файл user2.reg ), поэтому для отмены этих изменений следует использовать заплатку, созданную до их внесения (файл user1.reg ). Применение такой «заплатки» является эффективным средством, позволяющим вернуть исходные параметры. Но следует помнить о том, что «заплатка», использующаяся для отмены изменений, хороша для компьютера, на котором она создавалась, и может быть совершенной бесполезной на другом компьютере.

    Автоматизация удаления объектов Реестра (Registry)

    Одним из главных недостатков «заплаток» Реестра (Registry) является то, что они могут использоваться только для замены или приращения информации в Реестре (Registry). По некоторым причинам, «заплатки» не обеспечивают удаления разделов и параметров, притом что некоторые изменения вступают в силу только в том случае, если удаляются разделы. Например, чтобы удалить пункт Точечный рисунок (Bitmap Image) из меню Создать (New) программы Проводник (Explorer), необходимо удалить раздел HKEY_CLASSES_ROOT\.bmp\ShellNew полностью, но ни одна «заплатка» этого сделать не может.
    К счастью, в состав Windows 98 теперь входит Сервер сценариев Windows (Windows Scripting Host), в котором есть команда удаления информации из Реестра (Registry). О том, как пользоваться Сервером сценариев Windows (Windows Scripting Host), рассказывается в разделе «Советы по созданию сценариев» главы 9. Итак, удалим раздел, о котором мы только что говорили.

    1. Откройте простой текстовый редактор типа Блокнота (Notepad) и введите следующий текст:
      Call RegistryDelete ("HKEY_CURRENT_USER\.bmp\ShellNew", "")
      Sub RegistryDelete (KeyName, ValueName)
      Set WshShell = WScript.CreateObject ("WScript.Shell")
      WshShell.RegWrite KeyName & "\" & ValueName, ""
      WshShell.RegDelete KeyName & "\" & ValueName
      End Sub
      Первая строка вызывает подпрограмму RegistryDelete, указанную в следующей строке. Поставьте в кавычках полный путь и имя раздела Реестра (Registry), который вы собираетесь удалить, но не указывайте обратную черту.
      Для удаления единичного параметра (например, EditFlags, если бы он был указан), а не всего раздела отредактируйте первую строку так, чтобы она имела следующий вид:
      Call RegistryDelete ("HKEY_ CURRENT_USER\.bmp", "EditFlags")
      Чтобы удалить параметр [по умолчанию] ([Default]) раздела, вам надо будет воспользоваться стандартной «заплаткой» Реестра (Registry) и задать параметр по умолчанию пустой строкой @=" ".
    2. Сохраните файл и назовите его, например, Delete.vbs. Для запуска сценария дважды щелкните на нем мышью.
    3. В качестве другого полезного примера можно использовать следующий сценарий:
      Call RegistryDelete (HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows\CurrentVersion\explorer\ Desktop\NameSpace\{FBF23B42-E3F0-101B- 8488-00AA003E56F8}\", "")

      Sub RegistryDelete (KeyName, ValueName)
      Set WshShell = WScript.CreateObject ("WScript.Shell")
      WshShell.RegWrite KeyName & "\" & ValueName, ""
      WshShell.RegDelete KeyName & "\" & ValueName
      End Sub
    4. Этот сценарий используется для удаления значка программы Internet Explorer с Рабочего стола (Desktop). Текст этого сценария почти не отличается от предыдущего примера, за исключением того, что удаляется другая ветвь Реестра (Registry).
      Список других идентификаторов классов приведен в приложении 4 «Идентификаторы классов системных объектов». Об удалении значков с рабочего стола см. раздел «Очистите Рабочий стол от лишних значков» главы 4.
    Замечания и полезная информация

    Если вы хотите пользоваться файлами VBScript в Windows NT 4.0 и Windows 95, необходимо установить Сервер сценариев Windows (Windows Scripting Host — WSH) (см. раздел «Обучение продолжается» главы 9). Сервер сценариев WSH входит в состав Windows NT 5.0 и Windows 98, так что его дополнительная установка не требуется.
    В настоящее время не существует способа переименовать раздел Реестра (Registry) с помощью «заплаток» Реестра или Сервера сценариев WSH. Но есть другие способы. Например, можно экспортировать раздел в «заплатку» Реестра (Registry) и, пользуясь программой, в которой есть функция «найти и заменить» (допустим, редактор WordPad), переименовать разделы. Затем вы используете стандартную процедуру установки «заплатки» и запускаете вышеописанный сценарий для удаления старого раздела. С точки зрения программирования, вы можете сколько угодно повторять считывание раздела и его запись в другое место, после чего удалять оригинал.
    Подробную информацию о меню Создать (New) см. в разделе «Удалите лишние пункты из меню Создать (New) программы Проводник (Explorer)» главы 4.
    В главе 9 вы найдете подробное обсуждение Сервера сценариев Windows (Windows Scripting Host), там же описывается методика автоматизации изменения Реестра (Registry).

    Эффективный поиск в Реестре (Registry)

    В Редакторе реестра (Registry Editor) реализована простая функция поиска текста разделов и параметров (заметьте, что вы не можете осуществлять поиск в двоичных параметрах и параметрах DWORD). В меню Правка (Edit) Редактора реестра (Registry Editor) выберите пункт Найти (Find), введите искомый текст и щелкните на кнопке Найти далее (Find Next). В связи с тем, что Реестр (Registry) может быть достаточно большим и иметь огромное количество параметров и информации, важно научиться эффективным приемам поиска, которые помогут не только сберечь время, но и не пропустить важные данные. Кроме того, Редактор реестра (Registry Editor) не имеет функции «найти и заменить», он позволяет выполнять только такие простые процедуры, как, скажем, замена всех вхождений c:\program files на d:\program files — и это является вершиной его разума. Ниже я делюсь с вами некоторыми полезными «хитростями», использующимися для поиска в Реестре (Registry).

    • Включите все три переключателя в разделе Просмотреть (Look at) диалогового окна Поиск (Find), если вы ищете не конкретные Названия разделов (Key), Названия параметров (Value) или Значения параметров (Data). Чаще всего флажок Только строка целиком (Match whole string only) не устанавливается.
    • Многие имена папок хранятся в Реестре (Registry) как в краткой, так и в длинной версии. Например, требуется переместить папку Program Files с одного диска на другой (см. раздел «Очистите и настройте системные папки» главы 4). При установке Windows параметры этой папки могут сохраняться в Реестре (Registry) как в виде c:\Program Files, так и в виде c:\Progra~1, поэтому искать следует оба варианта.
    • Если поиск в Реестре (Registry) осуществляется для c:\Program Files и c:\Progra~1, можно попробовать искать просто progra, тогда в результатах поиска будут оба варианта. Но при этом будут найдены и все другие вхождения строки progra, поэтому, чтобы ограничить поиск, поставьте перед ней обратную черту: \progra. Теперь будут отыскиваться только папки, имена которых начинаются с заданной строки. Минута умственной работы при подготовке к поиску может сберечь час поисков.
    • Может возникнуть необходимость поиска элемента интерфейса, например нового пункта контекстного меню или текста в диалоговом окне. Если в тексте есть подчеркнутый символ, означающий «горячую» клавишу, в строке поиска необходимо указать перед ним знак & . Рассмотрим следующий пример. Вы установили программу, которая создает zip-файлы (пусть это будет WinZip, о которой вы прочтете в приложении 6). Эта программа добавила в контекстные меню всех файлов команду Add to Zip (Добавить в архив), причем буква Z подчеркнута. Эту команду нужно удалить. Чтобы правильно пометить текст для поиска, строка должна выглядеть так: add to &zip. Если использовать просто add to zip, то результат, скорее всего, будет нулевым. Заметьте также, что при поиске регистр букв не учитывается.
    • Поиск начинается с раздела, выбранного в настоящий момент. Если вы хотите быть твердо уверенными в том, что поиск ведется по всему Реестру (Registry), перед началом процедуры выделите элемент Мой компьютер (My Computer) в верхней части дерева каталогов Реестра (Registry). Но если вы знаете, что искомый параметр находится, к примеру, в разделе HKEY_LOCAL_MACHINE, то для сокращения времени поиска выделите только его.
    • Хотя в Редакторе реестра (Registry Editor) есть функция поиска, вы не можете искать и заменять текст. Если у вас есть некий раздел параметров, которые следует изменить, поскольку, например, приложение было перемещено с одного диска на другой или требуется заменить все вхождения Notepad.exe на другой текстовый редактор, можно использовать «заплатку» (см. раздел «Использование ”заплаток“ Реестра (Registry)» данной главы). Создайте «заплатку» для нужного раздела и измените параметры в ней с помощью любого редактора, имеющего функцию «найти и заменить». После установки «заплатки» все параметры будут изменены. Помните о том, что эту процедуру следует выполнять с осторожностью, так как можно случайно заменить посторонние параметры.
    • Если вам приходится пользоваться функцией «найти и заменить» достаточно часто и предыдущая «хитрость» с применением «заплатки» Реестра (Registry) вас не устраивает, можно использовать функцию Найти и заменить (Search and Replace) самого Реестра (Registry), которая более безопасна и удобна (см. раздел «Инструменты Реестра (Registry)» данной главы).

    Упаковка Реестра (Registry)

    Как вы уже знаете, Реестр (Registry) со временем может стать весьма объемным. Это отчасти объясняется тем, что в файлах Реестра есть «пустоты». Если вам знаком способ хранения данных в Реестре (Registry), то вам известно, что Реестр — это база данных. Как и во всех других базах данных, при удалении или добавлении записей не происходит перезаписи всей базы, чтобы не отвлекать ресурсы компьютера на эту работу. Вместо этого новая информация просто добавляется в конец файла, а в файлах, где информация была удалена, образуются «пустоты». Если такие процедуры выполняются часто, то файлы Реестра (Registry) в конце концов могут достичь огромных размеров<...>

    Упаковка любого файла базы данных, в том числе Реестра (Registry), заключается в считывании всех параметров и их дальнейшей записи по порядку в новый файл. Таким образом уничтожаются «пустоты», а записи располагаются последовательно. В результате размер файла уменьшается, а быстродействие системы возрастает.

    В Windows 95 для упаковки Реестра (Registry) приходилось выполнять долгую, замысловатую процедуру, которая включала в себя создания «заплатки» для всего Реестра (Registry) целиком и дальнейшей «перестройки» Реестра в режиме DOS. Что касается Windows 98, то в нее входит не только сервисная программа, которая упаковывает Реестр (Registry), но и делает это автоматически, когда размер «пустот» превосходит 500 Кбайт.

    Для ручной оптимизации Реестра (Registry) сначала завершите сеанс работы с Windows. В Главном меню (Start Menu) выберите пункт Завершение работы (Shut Down) и включите переключатель перезагрузить компьютер в режиме MS-DOS (Restart the computer in MS-DOS mode). В командной строке введите SCANREG /OPT. Если вы попытаетесь сделать это в Windows, у вас ничего не получится.
    Если вы считаете, что автоматическая оптимизация Реестра (Registry) заметно замедляет процесс загрузки, отключите ее. Для этого замените строку Optimize=1 строкой Optimize=0 в файле Scanreg.ini. Подробнее об этом файле и о программе Проверка реестра (Registry Checker) читайте в разделе «Создание резервной копии Реестра (Registry)» данной главы.

    О чем говорят типы файлов

    Термин «типы файлов» описывает набор сопоставлений документов приложениям, с помощью которых эти документы были созданы. Например, благодаря типу файла Windows «знает», что при двойном щелчке на файле с расширением . txt для его открытия следует вызвать программу Блокнот (Notepad). Традиционный способ конфигурации сопоставлений под ваши задачи описан в разделе «Настройка контекстных меню» главы 4, но в нем дана и более серьезная информация.
    Конфигурация файла начинается с расширений файлов — букв (обычно трех), которые ставятся после точки в большинстве имен файлов. Например, расширением файла Readme.txt является . txt, которое обозначает простой текстовый файл; расширением файла Resume.wpd является . wpd, которое говорит о том, что файл был создан приложением WordPerfect. По умолчанию Windows скрывает расширения зарегистрированных типов файлов в программе Проводник (Explorer) и на Рабочем столе (Desktop), но во многих случаях удобнее, чтобы расширения отображались: они позволяют определить тип конкретного файла (значкам почти всегда не хватает описательности), а также изменить то, как Windows интерпретирует тип файла, если расширение файла переименовывается.
    Заметьте, что простое переименование расширения не изменяет ни содержания, ни формата файла, а изменяет лишь способ взаимодействия Windows с файлом (см. раздел «Переименование файлов без предупреждений» главы 2). Чтобы отобразить расширения файлов, в меню Вид (View) программы Проводник выберите пункт Свойства папки (Folder Options), откройте вкладку Вид (View) и снимите флажок Не показывать расширения для зарегистрированных типов файлов (Hide MS-DOS file extensions for known file types).
    Скрывая расширения файлов, Microsoft надеялась на то, что это упростит пользование Windows, но по ряду причин этот план привел к обратным результатам. Например, не отображаются только расширения зарегистрированных типов файлов, а файлы, расширения которых не добавлены в базу данных Типы файлов (File Types), отображаются в любом случае. Когда же один из этих типов файлов регистрируется либо приложением, либо самой Windows, неискушенный пользователь может подумать, что все имевшиеся файлы этого типа были переименованы, так как их расширения магическим образом растворились (Windows никогда не скрывает расширения файлов незарегистрированного типа). В результате образуется пропасть — между теми, кто разбирается в типах файлов, и теми, кто в этом ничего не понимает: попробуйте попросить кого-нибудь, на чьем компьютере расширения файлов не отображаются, найти файл Readme.txt в папке, полной файлов! Возникли и другие проблемы. Например, попробуйте отличить в окне программы Проводник (Explorer) файл Excel.exe от Excel.xls, если расширения скрыты — первый файл является программой, второй — документом, созданным с помощью этой программы, но их значки могут быть одинаковыми.
    В разделе Реестра (Registry) HKEY_CLASSES_ROOT хранится информация о всех типах ваших файлов. Сначала перечисляются расширения файлов с точкой перед расширением, за ними следуют сами типы файлов. Разделы, названные по расширениям файлов, содержат данные, указывающие на разделы, в которых описаны типы файлов. Например, в разделе HKEY_CLASSES_ROOT\.txt (обратите внимание на то, что в название включена точка) вы найдете не так много информации. Здесь важным является параметр [По умолчанию] ([Default]), который содержит имя другого раздела, находящегося ниже в дереве каталогов. В случае . txt параметр [По умолчанию] ([Default]) имеет значение txtfile. Оно указывает на раздел HKEY_CLASSES_ROOT\txtfile, который и является настоящим типом <...>

    Все детали о типе файла хранятся в подразделе txtfile: например, формальное имя (в данном случае, "Текстовый документ" — "Text File"), значок, использующийся программой Проводник (Explorer) и приложение, которое служит для редактирования этого типа файлов. Так как на этот раздел могут ссылаться параметры расширений, тип файла (например, txtfile) может иметь несколько расширений, ссылающихся на него. Это важный момент, так как средства вкладки Типы файлов (File Types) программы Проводник (Explorer) не позволяют задавать более одного расширения для любого конкретного типа файла.

    Создание типов файлов

    Рассмотрим несколько способов создания типов файлов.

    • Структура <...> обычно возникает на экране, когда приложение запрашивает тип файла. В данном случае тип файла "Текстовый документ" ("Text File") был создан при первой установке Windows. Если для создания нового типа файлов вы пользуетесь вкладкой Типы файлов (File Types) программы Проводник (Explorer), о которой можно прочесть подробнее в разделе «Настройка контекстных меню» главы 4, то на экране появится примерно такое же окно.
    • Если вы когда-нибудь пытались открыть файл с незарегистрированным типом файла при помощи двойного щелчка, то в ответ на ваши действия появлялось диалоговое окно Открыть с помощью (Open With), которое также можно открыть, если, удерживая нажатой клавишу Shift, щелкнуть на любом файле и выбрать пункт Открыть с помощью (Open With). В этом окне вам предлагается выбрать программу, используемую для открытия файлов данного типа. Типы файлов, создаваемые этим способом, распознаются по суффиксу _auto_file, например, при выборе программы для открытия файлов с расширением .dat создается параметр типа файла dat_auto_file.
    • Последний способ создания типа файла — вручную. Это может быть как ручное редактирование Реестра (Registry), так и использование «заплатки» Реестра (Registry).

    Вне зависимости от того, какой способ использовался для создания типа файла, структура в Реестре (Registry) остается практически одной и той же <...>. Сначала создается раздел для каждого расширения, сопоставленного с типом файла. Параметр [По умолчанию] ([Default]) раздела расширения содержит название раздела, в котором находится тип файла, а не формальное имя типа файла. Так, здесь указывается не txtfile, а "Текстовый документ" ("Text File"). Значение типа ContentType может быть указано для некоторых типов файлов, но это не является необходимым условием нормального функционирования.
    Раздел ShellNew также может находиться под разделом расширения файла. Этот раздел сообщает Windows о необходимости включить расширение в пункт Создать (New) меню программы Проводник (Explorer). Тогда пользователь сможет создавать пустые файлы этого типа прямо из программы Проводник (Explorer), без запуска приложения. Причина, по которой раздел ShellNew находится под разделом расширения, а не под разделом типа файла (об этом ниже), заключается в том, что тип файла может иметь более одного расширения, а Windows должна «знать», какое из этих расширений использовать при создании нового файла. Раздел ShellNew обычно пуст, хотя в нем и может находиться параметр FileName, указывающий на шаблон (template) — файл, находящийся на жестком диске, который используется Windows для создания нового пустого документа (см. пример 3.2). В большинстве случаев параметр FileName опускается, и Windows создает файл размером в ноль байт (то есть пустой) с соответствующим расширением.
    Большая часть определения типа файла находится в основном разделе типа - файла, имя которого указано в каждом из вышеперечисленных разделов расширений. <...> Раздел txtfile является основным разделом, в котором содержатся все параметры для типа файла "Текстовый документ" ("Text File"). Обратите внимание на то, что параметр [По умолчанию] ([Default]) является описательным именем типа файла — это текст, отображающийся на вкладке Типы файлов (File Type) программы Проводник (Explorer) и в столбце Тип (Type) при просмотре файлов в режиме Таблица (Details).
    Если вы видите параметр AlwaysShowExt (его значение всегда пусто), это значит, что расширение для этого типа файлов отображается в программе Проводник (Explorer), даже если пользователь вознамерится скрыть расширения для файлов зарегистрированных типов. Также вы можете увидеть двоичный параметр EditFlags. Если он опущен или его значение равно 00 00 00 00, вы можете редактировать этот тип файла в программе Проводник (Explorer). Если значение параметра EditFlags равно 01 00 00 00, этот тип файлов не будет отображаться редактором Типа файлов программы Проводник (Explorer).
    Под разделом типа файла находятся три или четыре независимых подраздела. DefaultIcon содержит лишь параметр [По умолчанию] ([Default]), установленный для имени файла значка, использующегося для этого типа файлов. Значки определяются именем файла и индексом значка, например:
    d:\путь\имя_файла, ###
    Здесь d:\путь\имя_файла представляет собой полный путь и имя файла типа . exe, . dll, . ico или . bmp, в котором находится один или несколько значков, а ### является индексом (порядковым номером) значка (конечно, в реальности знаки # не отображаются). Чтобы использовать первый по порядку значок из тех, что находятся в файле, укажите 0 , второй — 1 и т. д. Выбрать значок проще всего с помощью программы Проводник (Explorer), так как вкладка Типы файлов (File Types) позволяет найти нужный значок без использования клавиатуры.
    Если присутствует раздел Быстрый просмотр (QuickView), то в контекстном меню для файлов этого типа будет находиться пункт Быстрый просмотр (Quick View) (см. раздел «Используйте Быстрый просмотр (QuickView) для любых файлов» главы 4). В этом разделе обычно имеется параметр [По умолчанию] ([Default]), чье значение равно * (- звездочке).
    Важнейшая часть информации хранится в разделе shell. Его подразделы определяют, что происходит при двойном щелчке на файле этого типа и какие команды доступны в контекстном меню таких файлов. Под разделом shell находятся независимые разделы для каждой из этих команд, а это значит, что при щелчке правой кнопкой мыши на файле этого типа указанные команды будут находиться в верхней части меню. Большинство типов файлов имеют команду Открыть (Open), которой соответствует одноименный раздел. Здесь также могут находиться разделы Правка (Edit), Печать (Print), Печать в (PrintTo) и Вид (View). Любую из этих команд (разделов) можно удалять, добавлять и редактировать. Под каждым из этих разделов находится раздел command. Значение параметра [По умолчанию] ([Default]) соответствует имени файла программы, использующейся для выполнения команды.
    Так, если программа Блокнот (Notepad) сопоставлена с командой Открыть (Open) для текстовых файлов, то содержимым раздела HKEY_CLASSES_ROOT\txtfile\shell\open\ command будет Noteapd.exe "%1". Оператор "%1" (вместе с кавычками) имеет важное значение, так как %1 — это то, что Windows заменяет в командной строке приложения, а кавычки нужны на тот случай, если в имени открываемого файла будут пробелы. Таким образом, если щелкнуть правой кнопкой мыши на любом файле, имеющем расширение . txt (скажем, c:\документы\мой_файл.txt) и выбрать в контекстном меню пункт Открыть (Open), Windows выполнит приводимую ниже команду, которая запустит программу Notepad.exe и сообщит ей, что следует открыть документ:
    Notepad "c:\документы\мой_файл.txt"
    Если для какого-то типа файла используется несколько команд, одна из них выделяется полужирным шрифтом <...> Такая команда называется командой по умолчанию и используется Windows, когда вы дважды щелкаете левой кнопкой мыши, а не правой. Обычно командой по умолчанию является Открыть (Open), но в качестве такой команды можно задать любую другую. Для этого укажите название команды в параметре [По умолчанию] ([Default]) раздела shell. Так, если для какого-то типа файла используются команды Открыть (Open), Правка (Edit) и Печать (Print) и вы указываете значение edit для параметра [По умолчанию] ([Default]), то команда Правка (Edit) будет выделена полужирным шрифтом в контекстном меню файлов этого типа и будет выполняться при двойном щелчке на файле. Обратите внимание на то, что хотя слово open часто пишется строчными буквами, в контекстном меню его первая буква остается заглавной (Открыть — Open). Windows сохраняет регистр всех остальных команд, но в этой автоматически ставит заглавную.

    Наконец, в разделе shellkey содержатся ссылки на расширения оболочки, но если вы не программист, то лучше вам сюда и не заходить. Заметьте, что вы можете удалять ненужные пункты контекстных меню и лишние вкладки в диалоговых окнах свойств для файлов некоторых типов путем удаления соответствующих разделов в раздел расширений оболочки, но будьте осторожны. В Реестре (Registry) также можно встретить разделы CLSID и ddeexec, которые имеют специальное назначение, но не представляют интереса для большинства пользователей.

    В связи с тем, что стандартный тип файла имеют столько составляющих, лучшим способом дублирования или сохранения (защиты) типа файла представляется создание «заплатки» (см. раздел «Использование ”заплаток“ Реестра (Registry)» данной главы). Если вы создаете совершенно новый тип файла, вероятно, проще всего сначала экспортировать существующий тип файла, а затем изменить некоторые его компоненты.

    Замечания и полезная информация

    Иметь под рукой некоторый набор типов файлов всегда полезно. Например, вы можете создавать собственные «заплатки» Реестра (Registry) для любых типов файлов, которые часто перезаписываются, таких как . jpg, . gif, . bmp, . txt, . doc и . html. Если приложение, которым вы не хотите пользоваться в данный момент, запрашивает сохраненный тип файла, просто установите «заплатку» Реестра (Registry) для восстановления своих настроек (см. раздел «Защита типов файлов» в главе 4).

    Подробнее о вкладке Типы файлов (File Types) программы Проводник (Explorer) можно прочесть в разделе «Настройка контекстных меню» главы 4. В разделе «Очистка Рабочего стола» той же главы рассказывается о других функциях раздела DefaultIcon.

    Использование файлов типа .ini

    Если вы имеете хоть какой-то опыт работы с компьютером, на котором установлена операционная система Windows, вам наверняка приходилось видеть файлы инициализации, имеющие расширение . ini. Файлы инициализации (в Windows 95/98 они называются файлами конфигурации ) использовались для хранения параметров разных приложений и предыдущих версий Windows до введения в обиход Реестра (Registry). Файлы типа . ini представляют собой простые текстовые файлы (их можно редактировать любым простым текстовым редактором, таким как Блокнот — Notepad), которые были отформатированы специальным образом для хранения этих параметров. Так как файлы . ini имеют ограничения на максимальный размер и являются не столь эффективными, как Реестр (Registry), разработчики приложений решили оставить этот тип файлов и начали сохранять параметры в Реестре (Registry). Но в связи с тем, что некоторые приложения, написанные до появления Windows 95, да и некоторые новые все еще используют . ini- файлы, вполне вероятно, что вам придется редактировать кое-какие параметры именно в них. Лучшим примером служит утилита Проверка реестра (Registry Checker) и ее файл Scanreg.ini, о чем говорилось выше. Параметры хранятся в файле . ini, а не в Реестре (Registry), что, помимо прочего, облегчает конфигурацию в режиме DOS.
    Вот несколько «хитростей», которые пригодятся вам при работе с . ini- - файлами.

    Редактирование файлов .ini
    • Чтобы открыть файл . ini программой Блокнот (Noteapd), дважды щелкните на нем. Если вы хотите использовать другой текстовый редактор для редактирования файлов этого типа, посмотрите как это сделать в разделах «Создание типов файлов» данной главы и «Настройка контекстных меню» главы 4.
    • Структура файлов . ini напоминает структуру «заплаток» Реестра (Registry) (см. пример 2.3). Разделы указаны в скобках, а в разделах находятся параметры.
    Поиск параметра во всех файлах .ini
    1. В Главном меню (Start Menu) выберите пункт Найти (Find), затем Файлы и папки (Files or Folders).
    2. В поле Имя (Named) введите *.ini, в поле Искать текст (Containing Text) введите искомую строку текста.
      Результат будет таким же, как при поиске параметра в Реестре (Registry), притом что файлы . ini обычно содержат строковые параметры. Этот способ можно использовать в том случае, если вы ищете какой-то конкретный параметр или «помеху», мешающую работать, которые не могут быть найдены иным способом в Реестре (Registry).
    Файлы System.ini и Win.ini
    • Параметры предыдущих Windows сохранялись в файлах System.ini и Win.ini. Хотя эти файлы уже не используются в Windows 95/98 в той мере, как это было в Windows 3.х, они оставлены в системе для обеспечения совместимости с ранними версиями некоторых приложений, которые сохраняют в этих файлах часть своих установок. Но есть некоторые параметры, которые разработчикам еще предстоит переместить из этих файлов куда-нибудь в другое место, например строка Shell=. Именно из-за нее эти файлы не утратили своего значения.
    • В разделе [Windows], находящемся в начале файла Win.ini, есть две строки, помеченные Load= и Run=. Эти строки использовались для перечисления программ, которые должны были запускаться во время загрузки Windows, и до сих пор в них может быть что-нибудь указано. Посмотрите, нет ли чего лишнего в этих строках, и удалите ненужные программы. В Windows 95/98 предпочтительнее пользоваться либо папкой Автозагрузка (Startup), находящейся в Главном меню (Start Menu), либо разделами Реестра (Registry) Run, RunOnce, RunServices и RunServicesOnce (см. главу 6).
      Если вы очистите эти файлы от ненужной или устаревшей информации, время загрузки Windows значительно сократится, при этом уменьшится и риск возникновения конфликтов. При очистке файлов будьте внимательны и сохраните резервные копии.

    Инструменты Реестра (Registry)

    Для просмотра и редактирования содержания Реестра (Registry) в состав Windows включен Редактор реестра (Registry Editor). К сожалению, возможности этой сервисной программы весьма ограничены, особенно по сравнению с тем, что обеспечивается другими доступными инструментами. Ниже я поместил список имеющихся утилит для работы с Реестром (Registry), некоторые из них хорошие, другие — плохие. Перед тем как воспользоваться любой из них, сделайте резервные копии Реестра (Registry). Более подробную информацию вы найдете в приложении 6.

    • Registry Search and Replace. Это полнофункциональный инструмент, который значительно облегчает и ускоряет глобальный поиск и замену в Реестре (Registry).
    • Norton Utilities for Windows 98. Коммерческий пакет, имеющий в своем составе более мощный редактор реестра Registry Editor и другие инструментальные средства. Редактор Norton Registry Editor похож на Редактор реестра (Registry Editor) Windows, но имеет утилиту отслеживания изменений в Реестре (Registry), утилиту для поиска и замены и другие полезные функции, которые не учла Microsoft.
    • TweakUI. Эта сервисная программа была помещена на Web-узле Microsoft вскоре после выхода в свет Windows 95 и представляла собой попытку уберечь пользователей от использования сложных процедур при работе с Реестром (Registry). Она обеспечивает доступ ко многим параметрам, которые иным образом можно изменить только в случае редактирования Реестра (Registry). Версия TweakUI для Windows 98 имеется на установочном компакт-диске Windows 98. Дополнительные сведения вы найдете в приложении 1.
    • RegClean. Это свободно распространяемый продукт корпорации Microsoft, который предназначен разработчикам на Visual Basic. Он используется для исправления проблем, возникающих с некоторыми разделами OLE (Object Linking and Embedding — технология связывания и внедрения объектов) в Реестре (Registry). В связи с многочисленными нареканиями я рекомендую воздержаться от его использования.


  • Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
    Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2024