|  На первую страницу |  Автомобиль |  О деньгах |  Интернет |  Компьютер |  Программы |  Электроника |  Ссылки |  Разное | 

Первые шаги
www.nyk.newmail.ru

Программы

На первую страницу Коротко Ссылки Почитать

Программы для "чистки" реестра Windows
(на примере NBG Clean Registry)

Андрей Климов

http://dialupprof.newmail.ru/
klm@pandoram.da.ru
источник: http://www.softbest.ru/

Автор не претендует на сверхточность излагаемого материала, возможно, что учтено и описано не все, поэтому назовем этот материал "Поверхностно-глубокие рекомендации" :-)

Оговорюсь сразу - как вам известно, каждый кулик хвалит свое болото, поэтому нет ничего удивительного в том, что я, автор утилиты NBG Clean Registry, попробую рассказать о подобных же утилитах и о том, каким, на мой взгляд, должен быть принцип их работы, сравнивая их с со своей разработкой.

Все утилиты для работы с реестром Windows можно разделить на следующие категории:

    - редакторы;
    - диагностика и лечение;
    - оптимизаторы;
    - мониторы;
    - многофункциональные;
    - другие

Программу NBG Clean Registry однозначно можно отнести к категории "диагностика и лечение", поэтому и будем рассматривать работу утилит, предназначенных ддя проверки реестра на наличие в нем ошибок и их дальнейшего исправления.

При выборе утилиты для проверки реестра надо знать и понимать:

1. Что именно проверяет та или иная утилита.

Прежде всего, необходимо отметить, что наличие в описании фразы "Утилита для исправления неправильных ссылок реестра" еще ни о чем не говорит. Вернее, о чем-то говорит, но слишком о малом, ведь все утилиты для проверки реестра можно разделить на три подтипа:

    - для проверки ссылок типа "ДИСК:\ПАПКА" И "ДИСК:\ПАПКА\ФАЙЛ";
    - для проверки служебных ссылок, например ссылок типа {00000010-0000-0010-8000-00AA006D2EA4};
    - для комбинированной проверки.

Совершенно очевидно, что желательно иметь в своем арсенале как минимум по одной утилите первого и второго подтипов или одну третьего (замечу, что NBG Clean Registry предназначена для проверки ссылок типа "ДИСК:\ПАПКА" и "ДИСК:\ПАПКА\ФАЙЛ", то есть относится пока к первому подтипу).

2. Как проверяется реестр

Возьмем, для примера, две очень известные утилиты - System Mechanic и Утилиты Нортона (в части, касающейся проверки реестра).
Обнаружено, что System Mechanics ссылки типа "ДИСК:\ПАПКА\ФАЙЛ_БЕЗ_РАСШИРЕНИЯ" воспринимает не как "ФАЙЛ_БЕЗ_РАСШИРЕНИЯ", а понимает это как каталог, что не есть правильно! Кроме того, ссылку типа "ДИСК:\ПАПКА\ФАЙЛ\1" System Mechanic считает ошибочной, что тоже неправильно, особенно в том случае, когда речь идет о ссылке, созданной штатной оболочкой (Explorer.exe) самой операционной системы и в данном случае подстрока "\1" - это параметр, указывающий на номер в списке MRU (история ранее выполненых программ). Этой же болезнью страдает и Regcleaner..

NU, так тот вообще находит далеко не все неправильные записи, но главное, что лечит он их весьма своеобразным способом: в случае, если пользователь сам не принимает решение , как лечить ту или иную неработающую ссылку, NU лечит так:

Допустим, для недостающего файла найдено соответствие на других дисках или в других каталогах. Хорошо, если таких соответствий одно, а если их более одного, скажем 100? Допустим, это файл uninst.exe (т.е. файл для удаления какой-то программы)... Что делает в этом случае NU: заменяет недостающий элемент первым элементом из списка соответствий. И что, это правильно? А если этот файл удаляет не требуемую программу "А", а программу "Б", или, что еще хуже, программу "Н", которая ни при каких обстоятельствах не должна удаляться?!

А теперь представьте себе такую картину - полечили мы таким образом корявую ссылку в реестре, а потом решили удалить программу "А". Что в итоге удалится? Конечно же - программа "Н", чего мы никак не ждем. Эта же логическая ошибка осталась и в NU-2000...

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

Многие утилиты привязываются к конкретным секциям реестра, игнорируя полностью остальные секции. Так, некоторые утилиты производят поиск по секциям ActiveX/COM (Microsoft RegClean), SharedDLL's, Font's, Application Path, и прочее, другие - только в корневых секциях типа HKEY_... Если же взять утилиту System Mechanics, то она проверяет ссылки не во всех, а только в трех корневых секциях - HKEY_CURRENT_USER, HKEY_USER и HKEY_LOCALE_MASHINE...
Кроме того, многие разработчики забывают о том, что не во всех операционных системах Windows секция HKEY_CURRENT_USER, например, есть тоже самое, что и HKEY_USER\..ИмяТекущегоПрофиляПользователя..., а HKEY_CURRENT_CONFIG - это так же HKEY_LOCAL_MACHINE\Config\..ИмяТекущегоПрофиляПользователя..., а ведь в действительности в зависимости от версии Windows зависит и реальное месторасположение этих секций - либо они изолированы друг от друга, либо одна из них есть вложение в другую.

Поскольку Windows продолжает развиваться, я счел нужным не вдаваться в подробности того, "что есть что на самом деле", сделав возможным выбор почти всех корневых секций. Таким образом, работоспособность утилиты стала меньше всего зависеть от версии Windows, чего часто нельзя сказать о других утилитах: либо разработчики излишне перестраховываются, ограничивая диапазон поиска, либо утилита привязывается к определенным версиям Windows (например, Norton Utiltes 4.0/2000, в общем-то неплохие утилиты, работают только под Windows 95/98, а вот если бы еще и под Windows NT/2000...).

Неискушенному пользователю названия, а тем более назначение всех этих секций реестра абсолютно ни о чем не говорят. Да и вообще - нужно ли забивать голову несчастного пользователя ненужной информацией? В моей утилите проверка производится везде, где только это возможно, при этом, в случае обнаружения неработающей ссылки, она заносится в "черный" список, и неважно, принадлежит ли она секции шрифтов или какой-то другой - она неработающая, и это все, что нужно знать пользователю. На крайний случай нужно еще знать полный путь до нее (эта информация может понадобиться на случай, если пользователь пригласит к себе СПЕЦИАЛИСТА, которому, естественно, фраза типа "ссылка из секции шрифтов не работает" ни о чем не скажет. "А поконкретнее?" - наверняка спросит специалист. Что может ему ответить пользователь, если утилита не ведет такую статистику? И чем тогда сможет ему помочь специалист?

А нужен ли вообще специалист? В моей утилите предусмотрен режим упрощенного анализа, который производит поиск простых ссылок, так или иначе однозначно на все 100% неработающих. При этой опции будет найдено, конечно же, меньше неисправностей реестра, но зато и значительно уменьшается вероятность его "запороть". Хотя эту опцию можно и отключить, и тогда будут найдены все неработающие ссылки. Короче говоря - работа утилиты должна быть по возможности автоматизирована, и в то же время желательно, чтобы у пользователя была возможность выбора.

Не менее важным аспектом является и то, как следует удалять неработающие ссылки и удалять ли их? Да, удалять или лечить обязательно надо - это диктует здоровая логика, но удалять можно по разному:

    а) удалить всю ветку со всем ее содержимым ( RegCleaner делает именно так),
    б) удалить только ключ со всем вложенным содержимым,
    в) удалить только значение ключа,
    г) удалить только неверный элемент из значения ключа (НАИБОЛЕЕ БЕЗОПАСНО!).
    А можно и переименовать ключ или изменить вручную его значение (подправить).
Наилучшим вариантом, конечно же, будет являться наличие всех перечисленных способов удаления, и поэтому в моей утилите предусмотрены все эти варианты, а вот как с этим у других? Не очень-то хорошо, хотя я убежден, что при наличии альтернативы надо обязательно давать право выбора варианта, и только без нее - альтернативы - делать автоматический выбор без участия пользователя.

При любой операции по изменению данных реестра (удаление или правка) наличие режима "Ой", т.е. возможности возвратиться на исходные позиции, является крайне желательной функцией, при этом было бы лучше всего, чтобы файлы отката были СТАНДАРТИЗИРОВАНЫ, то есть, например, чтобы это были обыкновенные файлы .REG стандартной утилиты RegEdit.

Для чего нужна такая стандартизация? Только она позволит произвести более-менее корректное восстановление информации способом более, чем одним, то есть такие файлы можно будет просто выполнить из-под Проводника, или загрузить из-под RegEdit'а, или - из-под любой другой оболочки, понимающей стандартный формат.
Делать так необходимо на тот случай, если пользователь по каким-либо причинам (например, в порыве ярости) уничтожил программу, с помощью которой он правил реестр. Чем тогда произвести восстановление? К сожалению, многие утилиты для чистки реестра хранят такую информацию в файлах своих собственных форматов. Многие - но не NBG Clean Registry...

Теперь о лечении - тут проще простого.
Берем ссылку, извлекаем из нее ИМЯ файла, т.е. отсекаем диск и путь, и ищем на всех доступных дисках недостающий файл. Нашли, хорошо, нет - удаляем. Нашли-то нашли, но сколько? Если одну - хорошо, а что, если 500? Как Вы уже, наверное, догадались - опять нужна альтернатива, т.е возможность пользователю самому выбрать один из вариантов. Подчеркну - это просто необходимо делать, чтобы не было повода для образования ситуации, описанной ранее про NU...

Ну и какие же выводы можно сделать? Чем же все-таки следует пользоваться для диагностики и лечения реестра?

Вот лишь некоторые рекомендации - и только в отношении наиболее известных и проверенных утилит.

Нежелательно использовать:

1. NBG Clean Registry версии младше 1.4.1;

2. Norton Utilities 4.0/2000 - не используйте при исправлении неполадок реестра рекомендуемые по умолчанию методы исправления. Выбирайте метод исправления самостоятельно.

3. Не производите чистку реестра при помощи RegCleaner (кнопка "Registry Cleanup")

4. SystemMechanic - ошибается при определении наличия на диске файла без расширения, а кроме этого, не умеет отделять записи файлов с параметрами "вплотную".

Обязательно пользуйтесь:

Microsoft RegClean в паре, скажем, с NBG Clean Registry, или используйте только Fix-It Utilities 2000 (на сегодняшний день это самая корректная комплексная система утилит).

Замечу еще, что NBG Clean Registry, по сравнению с Fix-It Utilities 2000, найдет все же ссылок типа "ДИСК:\ПАПКА\ФАЙЛ" гораздо больше и сделает это в наибольшей степени корректно.

14.07.2000

E-Mail: nyk@newmail.ru      Основной адрес: http://www.nyk.newmail.ru/
Зеркала: http://www.nyk.narod.ru/, http://www.nyk2.bizland.com/
Создан:13 февраля 2000 г. Автор: Николай Куртуков

Hosted by uCoz