Восстановление динамических библиотек и исполняемых файлов

  Операционная система Windows и поддерживаемые ею приложения в отсутствии требуемых исполняемых файлов перестают корректно работать. Помимо основных исполняемых файлов (с расширением EXE), существуют динамические библиотеки, также необходимые приложениям. К сожалению, в силу ряда причин (среди которых и неудачная оптимизация) исполняемые файлы могут оказаться поврежденными, а иногда и удаленными. Динамические библиотеки особенно уязвимы, поскольку часто используются несколькими приложениями. Если вы удаляете одно из таких приложений, оно можете стереть библиотеку, все еще нужную другим приложениям. Иногда это происходит по вашей инициативе — вы получаете сообщение о том, что библиотека, скорее всего, не используется, и соглашаетесь на ее удаление, хотя на самом деле она необходима.
Теперь, когда вы знаете суть проблемы, самое время приступить к примерам ее решения. Сейчас мы рассмотрим два важных вопроса: восстановление исполняемых файлов и регистрация динамических библиотек в реестре.
Получение копий файлов
  В большинстве случаев установочный пакет разработчика включает копии необходимых файлов. Тем не менее, перед получением копии вам нужно знать две вещи: имя файла и его местоположение.
  Для решения первой проблемы, как правило, достаточно внимательно пронаблюдать за приложением. Сообщения об ошибках зачастую содержат информацию о том, какой файл отсутствует, хотя ее бывает трудно обнаружить в хаосе сообщений, генерируемых приложением. Изучите всю информацию, предоставляемую приложением. Иногда разработчик создает список файлов, необходимых для запуска приложения (правда, на это не стоит полагаться в случае больших пакетов, таких как Microsoft Office). Просмотрите содержимое журнала событий — многие приложения помещают информацию об отсутствующих файлах туда, не выводя ее на экран. Кроме того, вы можете найти информацию об ошибках в Интернете. К примеру, обратитесь к разделу расширенного поиска на сайте Google и полностью введите содержимое сообщения об ошибке в поле поиска, заключив в двойные кавычки. Двойные кавычки заставят Google искать фразу целиком. В качестве последнего средства напишите в одну из интерактивных групп новостей и попытайтесь получить ответ. Лучше всего писать в группу новостей конкретного разработчика, хотя правильный выбор группы важен всегда.
  Иногда библиотеки DLL становятся источником проблемы, известной под названием Ад DLL (DLL Hell). Она может возникнуть в любой момент работы с системой, однако ее появление наиболее вероятно при установке и удалении приложений в процессе оптимизации. Ад DLL возникает, когда два приложения используют одну и ту же DLL, но требуют разных ее версий, причем это требование важно для работоспособности обоих приложений. Если оба приложения вам необходимы, найти компромисс становится очень трудно.
  Вот пример типичной ситуации. Для отображения диалоговых окон Microsoft поставляет библиотеку DLL, в которой имеется ошибка. Разработчик А создает приложение с использованием этой библиотеки, и с помощью хитроумного способа устраняет ошибку или, по крайней мере, делает так, что она не проявляется. В это же время Microsoft выпускает новую версию DLL, и разработчик В создает свое приложение с ней. Поскольку ошибка устранена, у разработчика В нет необходимости обходить ее. Установив оба приложения, вы обнаруживаете, что приложение В не работает, поскольку в нем нет метода устранения ошибки. Чтобы сделать его работоспособным, вы устанавливаете новую версию DLL, однако тогда отказывается работать приложение А, поскольку рассчитано на библиотеку, содержащую ошибку. Добро пожаловать в ад DLL.
Лучший способ преодолеть ад DLL — найти такие версии обоих приложений, которым требуется одна и та же библиотека DLL. Обычно разработчики создают обновления для своих продуктов, когда пользователи начинают жаловаться на проблемы. В описанной ситуации вам, возможно, придется полностью отказаться от приложения В и восстановить исходную версию DLL, чтобы заставить приложение А заработать снова.
  Вторая проблема легко разрешима в случае небольших приложений. Небольшие приложения обычно располагаются на одном компакт-диске или даже в одном ZIP-файле, поэтому все, что вам нужно сделать, — просмотреть содержимое архива. А вот большие приложения могут занимать несколько дисков со сжатыми файлами. В этом случае поиск вручную может затянуться на несколько часов. Здесь оказывается очень полезной поддерживаемая Windows ХР функция поиска в сжатых файлах. Однако эта функция не всегда срабатывает, поэтому иногда вам все же придется искать вручную. В качестве альтернативы можно попытаться найти файл в Интернете. Введите его имя в поле поиска и изучите результаты. Но следует соблюдать осторожность, поскольку вы можете получить файл, зараженный вирусом. Загружайте файлы только с сайтов, которым доверяете, чтобы снизить риск возможных повреждений.
Восстановление регистрации DLL в реестре
  Некоторые библиотеки DLL требуют регистрации. В процессе регистрации библиотека DLL загружается, у нее запрашиваются данные для записей, которые необходимо создать в реестре, и затем библиотека выгружается. Регистрация гарантирует наличие у библиотеки DLL связей, обеспечивающих ее нормальную работу. Единственная проблема заключается в том, что вы не знаете, какие библиотеки требуют регистрации. Динамические библиотеки иногда имеют расширения, отличные от DLL, например, EXE и OCX, где OCX — это собственное расширение технологии OLE (Object Linking and Embedding — связывание и внедрение объектов). Если вы не уверены в том, что имеете дело с регистрируемой библиотекой DLL, попытайтесь зарегистрировать ее. Если динамическая библиотека не располагает функциями, требующими записей в реестре, регистрация завершится неудачей, не причинив компьютеру никакого вреда.
Чтобы зарегистрировать DLL, введите в командной строке команду:
RegSvr32
Нажмите клавишу Enter. На экране появится сообщение об успешной регистрации. Если регистрация не удастся, не беспокойтесь — некоторые динамические библиотеки ее не требуют.
  Использование командной строки — не самый удобный способ регистрации DLL. В Интернете можно найти и загрузить графический интерфейс для утилиты RegSvr32. Он удобен при регистрации большого количества библиотек DLL, прост в использовании и бесплатен.