Практически каждый пользователь Microsoft® Windows™, озаботившись вопросами обслуживания своего компьютера сталкивался с программами сжатия, оптимизации, чистки системного реестра — выбор велик, от крохотных самостоятельных утилиток, до многофункциональных монстров. Причём мнения естествоиспытателей об эффективности той или иной программа разнятся кардинальным образом — одни восхваляют продукт, у других после такой чистки система вообще перестаёт нормально функционировать. Так что же выбрать рядовому обывателю?
Немного теории.
Реестр windows — это иерархическая база данных, подавляющее количество всевозможных настроек системы, пользовательских предпочтений и параметров установленных драйверов и приложений хранятся именно там. В большинстве своём, информация о назначении тех или иных ключей (записей) реестра является закрытой. Поэтому многие описания реестра основаны, в том числе, и на экспериментальных данных. Сложность интерпретации обусловлена ещё и скудным набором типов данных: это строки символов и двоичные данные разной длины. Т.е. просто глядя на отдельно взятый ключ реестра невозможно понять, что это: имя файла, ссылка на другую запись, название какого-либо объекта, просто символьная строка с названием, комментарием или что-то совсем другое.
О назначении некоторых ключей догадаться несложно, так в ветке
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\WMPlayer\Groups\Video\DVD
расположена весьма красноречивая запись:
"RequiredFile"="C:\WINDOWS\system32\enable.dvd"
Довольно сомнительное по эффективности решение микрософтовских программистов, тем не менее, замечательно иллюстрирует наглядность ряда параметров. Впрочем, недолго — все опробованные мной инструменты по обслуживанию реестра предлагали удалить этот ключ, ввиду отсутствия файла.
Отсюда следует, что однозначно определить корректна та или иная запись может только само приложение, читающее эти ключи. Это касается и описанных Микрософтом веток реестра: то что разработчикам рекомендуется писать в записи некоторой ветки пути к файлам вовсе не означает, что там не может быть других значений. Но как видно из приведённого примера, даже будучи уверенным в файловой природе параметра, невозможно ориентироваться на наличие данного файла в системе.
Пустые ветки реестра так же нельзя считать однозначно ненужным мусором. Необходимая ветка, скорее всего, без проблем будет создана при создании записи, а вот как поведёт себя приложение при попытке обхода несуществующих категорий — вопрос.
В принципе, наблюдая работу разных приложений и версий операционных систем, а так же трассируя возникающие ошибки, можно составить базу знаний по отдельным записям и их допустимым значениям. На основе такой статистики можно вносить практически безопасные коррективы в реестр. Однако, это титанический труд даже для крупного разработчика. Основная масса современных "оптимизаторов" попросту удаляет неугодных.
От теории — к практике.
Я провёл небольшой эксперимент — запустил несколько наиболее популярных инструментов на практически чистой, только установленной ОС Windows XP SP2. Несомненным "лидером" оказались Win Tools.net — нашлось 233 ошибки. Выборочный анализ показал, что среди прочих было рекомендовано удалить ссылки на очередь принтера, сетевое окружение и ещё ряд системных каталогов формируемых различными мастерами в процессе настройки системы. Многие записи похожие на имена файлов так же "попали под раздачу". Reg Organizer нашёл чуть больше сотни "ошибок", причём, анализируя имеющиеся файлы на диске, смог предложить вполне разумный вариант исправления. В частности, Adobe Reader 8 при установке прописывает некорректный путь к значку по умолчанию — Reg Organizer успешно подставил корректный файл. Другие широко распространённые утилиты — CCleaner (Crap Cleaner) и j16 PowerTools (с настройками по умолчанию) — нашли не более трёх десятков "некорректных" записей.
Как я уже упоминал, все программы "забраковали" вполне корректные записи, полный список я приводить не буду — достаточно упоминания общей и наиболее очевидной промашки.
Вывод отсюда довольно простой: традиционные алгоритмы оптимизации и очистки реестра допускают слишком много оплошностей и способны наоборот — дестабилизировать систему.
Сжатие и дефрагментация реестра.
Если же оставить в стороне проблему поиска логических ошибок, остаётся ещё два аспекта обслуживания реестра: сжатие и дефрагментация соответствующих файлов.
О сжатии довольно много говорили во времена Windows 95 — изначальная реализация не предполагала удаления данных из системного реестра — ветки и ключи лишь помечались как удалённые и скрывались из просмотра. Таким образом файл реестра постоянно рос. В подобной ситуации сжатие подразумевало физическое удаление неактуальной информации. Современные версии Windows лишены этого недостатка, здесь сжатие подразумевает уплотнение данных за счёт незанятых (освобождённых) областей в файле. Однако, стоит учитывать, что, как и в любой базе данных, излишняя уплотнённость препятствует эффективной записи — не зная деталей реализации этого процесса, нельзя говорить что сжатие однозначно полезно, вполне возможно — наоборот.
С дефрагментацией проще — как и любой другой изменяющийся файл, реестр подвержен фрагментации. Однако, штатная утилита дефрагментации Windows 2000, XP, 2003 (про Vista — не в курсе) не обслуживает ряд системных файлов, в том числе и системный реестр. Поэтому можно обратить внимание на альтернативные продукты, либо воспользоваться небольшой утилитой PageDefrag от Sysinternals (доступна для бесплатной загрузки с сайта Microsoft).
Подводя черту.
Исходя из всего изложенного, остаётся порекомендовать в качестве профилактики использовать только средства дефрагментации. Автоматические оптимизаторы и чистильщики свою работу выполняют довольно "грязно" и не могут быть рекомендованы рядовому пользователю.
Наиболее полноценным инструментом для выборочного исправления и анализа, пожалуй, будет Reg Organizer — он может отслеживать изменения вносённые в реестр, а так же наиболее корректно и подробно отображает информацию о найденных проблемах и предполагаемых изменениях. Замечание на счёт корректности немаловажно — так, глядя на отчёт, предоставляемый j16 Power Tool 2007, невозможно понять, какие именно значения вызвали подозрение у программы.
Версии использованного ПО.
Для эксперимента использовалась Windows XP Pro Rus SP2 с установленными Virtual Mashine Addons, Adobe Reader 8, Far Manager 1.70, K-Lite CodecPack 3.30, Framework.NET 2.0 и Avast! Antivirus 4.7 Home Edition. Версии используемых оптимизаторов: Win Tools.net — 8.8; Reg Organizer — 4.10; CCleaner — 2.02.527; j16 PowerTools 2007 — 2.7.0.416.
В то или иное время я просматривал и другие инструменты, результат был аналогичен. В этой же статье я упомянул программы, которые, по моим наблюдениям, наиболее часто рекомендуются в рунете.
http://busla.ru/articles/win_registry.html