Бухгалтерия от Microsoft
Архив- Товарищ прапорщик, а крокодилы летают?
- Ты что, сдурел?
- А товарищ полковник сказал, что летают...
- Так то ж аллигаторы!
Из армейских будней
Успокойтесь: детище Билли Гейтса не собирается осчастливить мир бухгалтерской программой - просто в операционных системах Windows 9х (и в NT тоже) есть одна вещь, которая очень сильно напоминает бухгалтерский баланс. И если этот баланс "не сойдется", то последствия будут не лучше, чем встреча с налоговой полицией для реальной бухгалтерии.
Ниже пойдет речь о реестре (Registry) Windows 9х. Возможно, вы впервые сталкиваетесь с таким понятием, как реестр операционной системы, - это заслуга корпорации Microsoft, которая постаралась максимально оградить пользователей от конфигурирования компьютера, предложив взамен спецификацию plug and play, основой которой и является реестр.
Итак, что же такое реестр Windows 9х? Это своего рода централизованная база данных, в которой хранятся все параметры и настройки операционной системы и установленных пользователем приложений. Здесь же содержится информация об аппаратной части машины. При каждой загрузке ОС "просматривает" файлы реестра и считывает оттуда необходимую информацию. (Сюда же немедленно заносятся все данные об обнаруженных новых устройствах и произошедших с момента последнего старта изменениях в конфигурации.) Фактически, говоря о реестре, имеют в виду два файла: SYSTEM.DAT и USER.DAT, которые помещаются в каталоге с Windows. Там же находятся их одноименные резервные копии с расширениями .DA0. И если что-то случается с вашим основным реестром, то система пытается загрузить конфигурационную информацию из резервных копий (которые также обновляются при каждом старте). Ели ей это не удается, ждите "жизнерадостную" надпись типа "реестр системы поврежден" и немного отдохните от надоевших "виндов". А если серьезно, то лучше создайте резервную копию реестра. Как это делается, я расскажу немного позже. В противном случае придется переустанавливать систему и все свои любимые программы. На моей памяти подобные обвалы случались редко, но, в случае чего, статистика для вас не станет утешением.
Первые попытки Microsoft использовать реестр относятся к моменту выхода Windows 3.х. В этой системе существовал файл REG.DAT, однако выполняемые им функции носили весьма облегченный характер - этот реестр отвечал, в основном, за ассоциации файлов с определенными приложениями и поведение объектов OLE. Основными средствами конфигурирования системы являлись файлы с расширениями .INI. С течением времени таких файлов становилось все больше, а найти их - все труднее.
С появлением Windows 9х исчезла необходимость в INI-файлах, хотя при апгрейде системы, скажем, от Windows 3.11 до Windows 98 реестр последней просмотрит старые INI-файлы и перепишет информацию из них уже в своем формате. Примерно то же получится и с 16-разрядными приложениями, если вы по каким-либо причинам захотите их использовать в системе Windows 9х.
"Полномочия" каждого из двух файлов реестра легко понять из схемы.
А теперь поговорим непосредственно о "бухгалтерии". Архитектура реестра включает в себя шесть основных разделов-ключей (директории), в которых содержатся значения (файлы), состоящие из данных (содержимое файлов). Данные могут иметь три формата: строковый (string - наиболее понятный), двоичный (binary - набор шестнадцатеричных цифр произвольной длины) и, наконец, состоящий из двух слов (DWORD - восьмизначное шестнадцатеричное число). Как видно из картинки, очень похоже на панель "Проводника". Редактор реестра запускается командой REGEDIT.EXE (Пуск/Выполнить).
Каждый ключ имеет определенные функции.
HKEY_CLASSES_ROOT
Обеспечивает обратную совместимость с Windows 3.х в целях поддержки OLE и DDE. Все подключи, за исключением самого первого, показывают ассоциации расширений файлов с установленными приложениями. Поиск информации, ассоциированной с типом документа, Windows 9х начинает с поиска имени подключа, совпадающего с расширением имени файла.
HKEY_CURRENT_USER
Если на компьютере работает несколько человек, то каждый из них может настроить интерфейс системы по своему вкусу. В данном ключе содержится информация о настройках для каждого пользователя, которая различается по именам входа и считывается при регистрации.
HKEY_LOCAL_MACHINE
Хранит информацию о конфигурации аппаратных средств и ПО компьютера. Данные в этом ключе не зависят от того, какой пользователь зарегистрировался для работы в системе. С точки зрения пользователя, этот ключ наиболее интересен и важен. Это ясно даже по названиям подключей:
\Config Информация о конфигурации системы (можно создавать дополнительные конфигурации, используя "Панель Управления/Система/Конфигурации"). Имена, определяемые пользователем для новых конфигураций, помещаются под ключом HKEY_LOCAL_MASHINE\System\CurrentControlSet\ Control\IDConfigDB.
\Enum Цель данного подключа - построение дерева аппаратных средств, присвоение уникальной метки каждому устройству, извлечение конфигурационной информации о любом устройстве из реестра или самого устройства. Например, информация о PnP-устройствах содержится под ключом \Enum\Root.
\Hardware Здесь информация только о последовательных портах и модемах.
\Network Содержит данные о зарегистрировавшемся пользователе, которые помещаются сюда в момент входа в сеть.\Security Информация зависит от типа сети - возможности администрирования, ресурсы.
\Software В этом подключе описывается все программное обеспечение, установленное на компьютере. Названия главных подключей совпадают с именами производителей софта (например, Microsoft, Quarterdeck).
Подключ \Classes идентичен ключу HKEY_CLASSES_ROOT.
\System Данный подключ управляет большей частью действий по загрузке системы. Содержит, в числе прочих, несколько интересных подключей:
Здесь содержится список подозрительных библиотек, которые могут неправильно работать.
Список приложений, которые работают плохо либо никак.
HKEY_USERS
Хранит всю информацию о профилях пользователей.
HKEY_CURRENT_CONFIG
Указывает на подключ HKEY_LOCAL_MACHINE\Config, где содержится информация, характеризующая компьютер.
HKEY_DYN_DATA
Постоянно поддерживает информацию, которая должна находиться в оперативной памяти. Несмотря на то, что информация в реестре обновляется через определенные интервалы времени, или приложениями, устанавливаемыми в системе, какая-то часть информации должна быть доступна немедленно - именно она и находится под этим ключом.
Любая программа, инсталлируемая под Windows 9х, равно как и удаляемая, редактирует реестр. Если она действительно на 100% совместима с системой (лейбл "Designed for Windows 95" - необходимое, но не достаточное условие), то проблем возникнуть не должно, однако в жизни так получается далеко не всегда. Особенно это касается деинсталляции: иногда при попытке удалить программу стандартными средствами (Панель Управления\Установка и удаление программ) выдается сообщение, смысл которого сводится к невозможности данной операции. И даже если вы вручную удалите все файлы, относящиеся, по вашему мнению, к ненужной программе - информация о ней в реестре все равно останется. Иногда это вас ни к чему не обязывает, иногда, как недавно мне, - мешает. Мне требовалось установить на одной машине такую специфическую штуку, как Winmodem. После нескольких неудачных попыток установки и скачивания свежего драйвера, который вначале не помог, пришлось лезть в реестр и вычищать все, что относилось к этому модему, включая сэмулированный порт. Дальше все прошло как по маслу: модем обнаружился, распознался и установился при моем минимальном участии. В любом случае, ненужный мусор "давно минувших дней" еще никому не помогал. (Однако имейте в виду, что в редакторе нет команды "отменить" - удаления необратимы.)
При написании данного материала я столкнулся с неожиданной проблемой: Word 7.0 ни в какую не желал импортировать картинки .JPG, хотя все настройки были в порядке. Можно, конечно, было конвертировать файлы в .BMP, против которых Word не возражал, однако я пошел иным путем - запустил REGEDIT и задал ключом для поиска (Ctrl+F) слово "JPEG". Редактор открыл длиннющий адрес: HKEY_LOCAL_MASHINE/Software/Microsoft/ Shared Tools/Graphics Filters/Import/JPEG. По параметру "Path" не трудно было догадаться, какой фильтр импортирует .JPEG и где он "лежит".
Я проверил этот путь и, естественно, не обнаружил ни директории, ни такого файла с расширением .FLT. Дальнейшее было делом техники: переписать нужный файл с другого компьютера не составило большого труда. Все заработало сразу же. Конечно, не всегда все может получиться так гладко - поиск в реестре обычно выдает множество ссылок (они листаются по F3), и не факт, что одним махом удастся все исправить, однако в предыдущем примере я руководствовался только интуицией, и результат превзошел ожидания.
Или вот еще такой случай, он касается мультиконфигурационной настройки системы: один "несознательный" ноутбук, будучи включенным в офисную сеть, переписал из нее чужие юзеровские настройки, с корнем удалив старые. Это удалось исправить, но при входе в сеть для ввода пароля невозможно было переключиться с русской раскладки клавиатуры на английскую. Произошла какая-то тотальная локализация операционной системы. Данные о раскладке клавиатуры хранятся под ключом HKEY_CURRENT_USER\ \Keyboard Layout\Preload, и дальше есть две папочки: в одной стоит цифра 00000409, в другой - 00000419. Когда эти цифры поменяли местами, то все стало нормально.
Можно с помощью редактора реестра сделать несколько мелких, но приятных усовершенствований. (Можно, в принципе, их сделать много, но я расскажу лишь о проверенных лично.) Как известно, "Проводник" позволяет открывать папки либо все в одном окне, либо - каждую в своем. Путем нехитрой манипуляции можно при настройке "открывать все папки в одном окне" правой кнопкой мыши открыть какую-нибудь незнакомую папку в новом. Для этого нужно создать по адресу HKEY_CLASSES_ROOT\Directory\Shell новый подключ (раздел) "opennew" и присвоить ему значение "open new & window". В этом новом разделе создаем еще один подключ - "command" и присваиваем ему значение "C:\Windows\Explorer.exe %1". Разумеется, если у вас системная директория - Windows, а не WIN’95 или MS-WIN.95, иначе - укажите правильный путь. Теперь, заходя в панель "Проводника", можно, как и раньше, открывать папку двумя щелчками мыши, а можно, если выбрать в меню по правой кнопке мыши пункт "open new window", любую из них открыть в новом окне, сохранив предыдущее.
Если у вас не самый быстрый компьютер, то можно значительно ускорить работу за счет более быстрого появления "всплывающих" меню. Для этого по адресу HKEY_CURRENT_USER\Control Panel\Desktop надо добавить (в правом окне) строковое значение MenuShowDelay и присвоить ему значение "1". (диапазон значений 1-10). На 486-х машинах ускорение видно невооруженным глазом.
Для автоматического обновления экрана в "Проводнике" или "Моем компьютере" нужно по адресу HKEY_LOCAL_MASHINE\System\CurrentControlSet\ Control\Update изменить двоичное значение параметра UpdateMode с "0000 01" на "0000 07".
Наконец, если на вашем компьютере много файлов с расширением .BMP, можно просматривать их содержимое в виде иконок непосредственно в "Проводнике". Для этого по адресу HKEY_CLASSES_ROOT\Paint.Picture\DefaultIcon измените значение последнего подключа с "default" на "%1". Если подключа "DefaultIcon" у вас нет, то самое время его создать. Теперь заходите "Проводником" в директорию WINDOWS и ныряйте в самый конец: вот они, узоры для экрана, в лучшем, чем раньше, виде.
Однако с реестром нужно обращаться крайне осторожно. Если вы там что-то испортите (например, изменяя шестнадцатеричные значения), то не надейтесь на службу технической поддержки Microsoft - на вопросы о реестре здесь не отвечают (зачем же тогда в комплекте поставки утилита REGEDIT? Видимо, опять аллигаторы. См. эпиграф). Собственно, для того и придумали PnP, чтобы поменьше пользователей копалось в системных файлах.
Теперь о важном: для штатного копирования системного реестра существует утилита CFGBACK (ее можно найти по адресу www.microsoft.com/Softlib/MSLfiles/cfgbk.exe).
Однако наилучшим мне представляется другой способ. Перезагрузитесь в режиме Command Prompt Only (в момент появления надписи "Starting Windows 95" нажмите F8 и выберите указанный режим; кажется, это пункт 6), затем наберите команду REGEDIT /E C:\COPYREG.REG.
Редактор реестра при этом скопирует информацию из системной директории в указанный файл по предложенному пути. В данном примере по ключу /E(XPORT) создается файл COPYREG.REG в корневом каталоге диска С. Разумеется, название файла и путь можно изменить.
Восстановление происходит аналогично, только без ключа /Е.
Существует утилита, предназначенная непосредственно для очистки реестра от мусора и освобождения его от ошибок, - Microsoft RegClean, у меня стоит версия 4.1 (находится там же, где и предыдущая, файл REGCLEAN.EXE). Из ее описания легко проследить стратегию Microsoft, которая предусматривает в будущем объединение операционных систем Windows 9х и NT: там четко указано, что утилита подходит для использования с Windows 95 и более поздними версиями, а также с NT 4.0 и выше, и даже с NT 3.51. Так что Windows 98 - скорее всего, последняя ОС этой серии.
Существует немало программ, специально предназначенных для правки реестра. Например, Winhacker запросто переименует вашу "Корзину" в "Мусорку" или еще как захотите. Это все-таки лучше, чем лезть в реестр непосредственно. Tweak UI вместо здоровых стрелок на стандартных ярлыках сделает вам маленькие и аккуратные. Она же будет по вашей просьбе автоматически вводить параметры для входа в сеть. Продолжать можно долго. Обе эти программы, как и многие другие, весьма полезные, можно найти по адресу castle.sonnet.ru/~romix/ww95utl.htm.
Если с вашим реестром случилось непоправимое, могу посоветовать лишь загрузиться с резервной дискеты, которую предлагается создать при инсталляции системы, и попытаться восстановить реестр, как описано выше, из резервной копии. Если вы не успели сделать копию - попробуйте поменять расширения копий файлов реестра .DA0 в .DAT и перегрузиться. (Пытаться нужно после первой же неудачной загрузки!)
Может возникнуть ситуация, когда после вроде бы успешной установки Windows не грузится. Есть еще один файл, который можно отнести к реестру, помимо двух вышеупомянутых, - SYSTEM.1st. Он создается при первом запуске программы setup для Windows 9х. Замените им файл SYSTEM.DAT и перезагрузитесь.
Наконец, если система выдает сообщение, что невозможно обнаружить файлы реестра, хотя они вроде бы на месте и в порядке, попробуйте отредактировать файл MSDOS.SYS, чтобы его содержимое выглядело следующим образом:
[Paths]
WinDir=C:\Windows
указываем системный каталог
WinBootDir=C:\Windows
указываем местонахождение файлов для загрузки
HostWinBootDrv=C
указываем корневой каталог
[Options]
BootMulti=1
разрешаем загрузку второй ОС, помимо Windows
BootGui=1
разрешаем графический пользовательский интерфейс
Network=1
разрешаем работу в сети
Размер файла не должен быть меньше 1024 байт, иначе антивирусные программы могут его удалить.
Напоследок хочу посоветовать в своей повседневной работе использовать все возможности стандартных средств конфигурирования системы (иногда бывает достаточно прочитать файл READ.ME, перед тем как начинать инсталляцию) и открывать редактор реестра только в случае, когда это действительно необходимо. Тогда "аварийная" часть данной статьи вам вряд ли когда-нибудь пригодится. (Не стоит также щелкать мышкой по незнакомым файлам с расширением .REG - их содержимое будет импортировано в реестр без всяких дополнительных расспросов и может заменить уже имеющуюся информацию на неверную.)
|