Тема реестра очень популярна в литературе, посвященной ОС Windows. Большинство авторов посвящают одну или несколько своих статей этой тематике. Я по ходу своего повествования постараюсь "не свалиться" ни в механическое перечисление значений всяких полезных ключей, ни в сухое теоретизирование, свойственное официальным публикациям "Майкрософт", посвященным этой теме.
Системный Реестр является одной из наиболее важных составляющих операционной системы Windows. Эта большая и сложная база данных в иерархической форме (сходной древовидной структурой папок Windows) хранит все конфигурационные установки ПО и оборудования. Каждый раз, когда пользователь производит какие-либо изменения в параметрах системной настройки в Панели управления, или в ассоциациях файлов, или вносит изменения в установленном программном обеспечении - все эти изменения отражаются и сохраняются в Системном Реестре. Впервые Реестр появился в Windows 95. По замыслу Microsoft он должен был полностью заменить файлы INI и хранить всю информацию по аппаратной конфигурации компьютера, различные настройки операционной системы и установленных программ, в том числе, и сторонних разработчиков. Физические файлы, которые составляют Системный Реестр, расположены в зависимости от версии Windows: в Windows 95 и 98 - в двух файлах системного каталога Windows, называемых USER.DAT и SYSTEM.DAT, в то время как в Windows семейства NT (к которым относится Windows 2000/XP) эти файлы содержатся в каталоге Windows/System32/Config.
Реестр Windows слишком велик и сложен, поэтому в большинстве случаев, когда вся система функционирует в штатном режиме, особой необходимости заглядывать туда нет. Тем не менее, сплошь и рядом могут возникнуть ситуации, когда он может стать причиной возникновения многих проблем в работе ПК. В лучшем это проявляется в постепенном "засорении" жесткого диска, уменьшении скорости его работы, а также в увеличение времени загрузки системы. В худшем - однажды может произойти непоправимое и операционная система либо вообще перестанет загружаться, либо загрузится, но с таким количеством ошибок, что нормальная работа будет просто невозможна. И тогда хочешь, не хочешь, а засучивай рукава - и вперед: или грудь в крестах, или… очередная переустановка. Вот именно для таких ситуаций и надо иметь хотя бы приблизительное представление о структуре реестра, его функционировании, месторасположении различной информации и принципов работы с ней. Запускаем редактор реестра пуск/выполнить/(RegEdit)/ок.
Системный реестр имеет иерархическую древовидную структуру, которая практически идентична для всех ОС семейства Windows и напоминает структуру каталогов на жестком диске и состоит из 6 основных разделов, названия которых начинаются с обозначения "HKEY_":
1: HKEY_CLASSES_ROOT - содержит сведения о зарегистрированных расширениях, файловых ассоциациях, технологии OLE, механизме Drag&Drop и других функциях интерфейса, реализуемых на уровне ядра системы.
2: HKKEY_CURRENT_USER - эта ветвь реестра хранит настройки персональной оболочки текущего пользователя операционной системы (меню "Пуск", Рабочий стол и т. д.).
3: HKEY_LOCAL_MACHINE - содержит общую системную информацию об установленных параметрах аппаратуры и программного обеспечения. В нем содержатся как общие для всех пользователей параметры, так и некоторые индивидуальные настройки.
4: HKEY_USER - содержит информацию о настройках Windows, общих для всех пользователей.
5: HKEY_CURRENT_CONFIG - здесь содержится информация о конфигурации устройств Plug&Play и сведения о конфигурации компьютера.
6: HKEY_DYN_DATA - содержит информацию о состоянии различных устройств, которая может изменяться в процессе работы системы. Эта информация обновляется при каждом запуске системы, каждый раз изменяясь в соответствие с изменениями аппаратной конфигурации компьютера. В каждом из этих разделов также содержатся подразделы (keys), в них - подразделы следующего, более низкого уровня и т.д. В них хранятся значения (values), которые могут иметь строковый тип (String Value) - обычная текстовая строка, двоичный тип (Binary Value) - число, записанное в шестнадцатеричной системе и целочисленный тип (Dword Value) - число, записанное как в десятичной, так и шестнадцатеричной системах счисления.
При установке приложений в Системном Реестре, как правило, создаются новые записи, которые после удаления программы зачастую полностью не удаляются и остаются лежать мертвым грузом в "закромах". Со временем Реестр слишком разбухает, что отрицательным образом сказывается на стабильности системы. Таким образом, наша главная задача заключается в очистке Реестра от "ошметков" давно удаленных программ.
Прежде чем приступать к каким-либо операциям с Реестром надо крепко-накрепко усвоить два основных правила работы с Реестром Windows:
Во-первых, ВСЕГДА и в ОБЯЗАТЕЛЬНОМ порядке необходимо создать резервную копию Реестра, иначе и браться за его редактирование будет мало смысла - быстрее и дешевле сразу переустановить систему.
Второе правило относится непосредственно к редактированию Реестра: НИКОГДА не следует удалять или изменять информацию в реестре, если Вы на все 100 % не уверены в правильности своих действий. В противном случае некорректное изменение данных может привести, в лучшем случае, к восстановлению информации из резервной копии (см. выше).
Резервное копирование Реестра
Для получения самой свежей копии Системного Реестра уместнее всего воспользоваться встроенным Редактором реестра (RegEdit). Возможности экспорта в редакторе Windows позволяют копировать Реестр как по частям, так и полностью. Для этого, запустив RegEdit, необходимо в дереве каталога выделить "Мой компьютер", затем в меню Реестр выбрать "Экспорт файла реестра", ввести имя и расширение резервного файла.
Еще одним способом резервирования важнейшей системной информации для пользователей Windows Me/2000/XP является стандартная служба архивации и восстановления системы (Пуск / Программы / Стандартные / Служебные / Архивация данных). Воспользовавшись услугами этой службы, можно сохранять не только содержимое Реестра, но и создать резервные копии всех имеющихся данных, а также восстановить состояние системы с архивных копий.
Кстати, в Windows 98SE и младше все это сделать можно гораздо проще: в них резервная копия создается автоматически при первом за сутки запуске (перезагрузке) системы, причем по умолчанию хранится 5 таких копий. Вручную же создать еще одну такую копию можно командой:
scanregw /backup
Восстановить рухнувшую систему следует из-под "чистого" DOS командой:
scanreg /restore
При этом, между прочим, Реестр автоматически уплотняется, так что такую процедуру можно регулярно проводить и с целью "порастрясти жирок" со слишком разросшегося Реестра. Пустячок, а все равно приятно. А вот Windows 2000/XP сама резервных копий делать не умеет, хотя и ее можно восстановить, используя вариант реестра, автоматически сохраняемый после последней удачной загрузки (Windows/repair).
Ручное редактирование Реестра
Ну вот, теперь мы не только получили хоть какое-то представление о том, что это за зверь такой, системный реестр Windows, но и, успешно создали и сохранили (там, где сумеем в случае проблем без труда отыскать ее) резервную копию текущей конфигурации Реестра. Застраховавшись таким образом от потенциальных проблем в случае нашей потенциальной (я подчеркиваю - только потенциальной) криворукости, мы, наконец, с чистой совестью сможем приступить к увлекательнейшей процедуре "раскурочивания" Реестра.
Если не считать чисто детского любопытства посмотреть, что же там внутри любимой игрушки (разломав ее при этом в пух и прах), лезть руками в Реестр я бы рекомендовал только в двух случаях:
Наведываться в Реестр лучше всего сразу после деинсталляции (удалении) практически любых программ для того, что бы удалить следы их пребывания в системе, И каждый раз Вы будете удивлены, как много "мусора" даже лучшие их них оставляют после себя.
Очень полезно регулярно инспектировать Реестр с целью выявления и удаления ключей отдельных излишне рьяных приложений, без зазрения совести прописывающих себя в тех ветвях Реестра, которые отвечают за различные виды автоматического запуска программ при старте системы.
С первым пунктом все вроде бы ясно - открываем RegEdit, нажимаем комбинацию клавиш Ctrl-F или меню правка-найти и в появившемся окошке вводим название того, что мы хотим найти. Естественно, это будет название удаленной программы, хотя могут быть и варианты. Так, например, иногда стоит поискать и по имени фирмы - разработчика. И ищем, ищем, ищем... Да, это долго и нудно (ведь после каждого найденного значения необходимо еще раз нажать F3, и так до "упаду", особенно если ключей очень много), но никуда не денешься. Конечно, существует большое количество специализированных утилит для поиска и удаления "дохлых" ссылок реестра, способные существенно облегчить неблагодарный труд "ассенизатора", однако правда жизни такова, что на все 100 % гарантировать успешный результат ни одна из них не в состоянии. Ведь структура Реестра настолько гибка, что позволяет вносить в него "программописателям" все, что им заблагорассудится. А им, поверьте, иногда может такое "заблагорассудиться", что и в страшном сне не приснится. Так что ручками, ребята, ручками...
Ну, хорошо, все, что могли, мы руками вычистили, а что дальше? А дальше - оптимизация Реестра, которая является логическим продолжением операции чистки. Ведь при удалении ссылок из Реестра они оттуда физически не удаляются, а только помечаются, как удаленные, что, конечно, обеспечивает определенное увеличение скорости работы с Реестром, но все это до поры, до времени. И здесь в наиболее выигрышном положении оказываются те, кто сохранил верность "старушке" Windows 9х, которая при загрузке проверяет реестр и, если в нем обнаружено более 500 Кбайт "пустышек", то она автоматически дефрагментирует Реестр. С Windows семейства NT все гораздо сложнее, так как их Реестр в физическом плане серьезно отличается от Windows 9x и в оптимизации практически не нуждается, т.к. при работе ОС та часть его содержимого, которая доступна текущему пользователю, загружается в оперативную память (кэшируется). Когда производится операции записи или удаления в Реестре, то изначально все это происходит в памяти, а уж потом в фоновом режиме буфер кэша сбрасывается на диск, но опять же, переписывается не весь реестр, а только та его часть, которая была изменена. Поэтому особого смысла как-то оптимизировать Реестр Windows NT нет. Хотя, для особо жаждущих его дефрагментировать, среди целой кучи хороших и разных программ для работы с Реестром, есть утилита RegDefrag, которая как раз и занимается этим полезным делом.
Реализация второго же пункта вызовет гораздо меньше затруднений - ведь за автозапуск программ в Windows отвечают ключи, находящиеся в хорошо всем известной ветке:
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion. Там есть подразделы: Run, RunOnce, RunOnceEx, Run Services, RunServicesOnce. В них и содержатся ключи, отвечающие за запуск программ. Название ключа может быть произвольным, а в качестве его значения указывается запускаемая программа. В разделе Run по умолчанию система устанавливает следующие ключи: internat.exe, LoaderPowerProfile, ScanRegistry, SystemTray, TaskMonitor, а в разделе RunServices повторно дублируется ключ LoadPowerProfile. В разделах, в которых присутствует слово "Once", прописывают свои значения программы, запуск которых надо произвести один раз, например при установке, или наоборот, при удалении программы. Поэтому в нормальных условиях они должны быть пусты. Все остальные ключи, присутствующие в любом из этих разделов Реестра, добавлены установленными программами и подлежат придирчивой инспекции на предмет их лояльности, дерзайте.
Вообще-то следует признать, что сама идея Системного Реестра Windows оказалась далеко не самой удачной, поэтому в своих новых разработках Microsoft решила полностью отказаться от Реестра в его нынешнем виде. В разрабатываемой сейчас ОС нового поколения, все те функции, которые сегодня выполняет Реестр, будут возложены непосредственно на файловую систему нового типа, построенную на основе перспективных технологий.