Что такое файлы DLL и почему один из них отсутствует на моем компьютере?

Когда вы получаете сообщение об ошибке, в котором говорится, что Windows не может найти конкретный файл DLL, может возникнуть соблазн загрузить файл с одного из множества сайтов DLL. Вот почему вам не следует этого делать.

Что такое библиотеки DLL?

СВЯЗАННЫЕ: Что такое rundll32.exe и почему он запускается?

Прежде чем мы начнем с того, почему вам не следует загружать файлы библиотеки динамической компоновки (DLL) из Интернета, давайте сначала посмотрим, что такое файлы DLL. Файл DLL - это библиотека, содержащая набор кода и данных для выполнения определенного действия в Windows. Затем приложения могут вызывать эти DLL-файлы, когда им нужно выполнить это действие. Файлы DLL во многом похожи на исполняемые файлы (EXE), за исключением того, что файлы DLL нельзя запускать напрямую в Windows. Другими словами, вы не можете дважды щелкнуть файл DLL, чтобы запустить его так же, как файл EXE. Вместо этого файлы DLL предназначены для вызова другими приложениями. Фактически, они предназначены для одновременного вызова несколькими приложениями. «Ссылочная» часть имени DLL также предполагает еще один важный аспект. Несколько библиотек DLL можно связать вместе, чтобы при вызове одной библиотеки DLLодновременно вызывается ряд других DLL.

Сама Windows широко использует библиотеки DLL, о чем C:\Windows\System32можно узнать из экскурсии по папке. В качестве примера того, о чем мы говорим, давайте рассмотрим системный файл Windows «comdlg32.dll». Этот файл, также известный как библиотека общих диалоговых окон, содержит код и данные для создания многих общих диалоговых окон, которые вы видите в Windows, - диалогов для таких вещей, как открытие файлов, печать документов и так далее. Инструкции в этой DLL обрабатывают все, от приема и интерпретации сообщений, предназначенных для диалогового окна, до определения того, как диалоговое окно выглядит на вашем экране. Очевидно, что несколько приложений могут одновременно вызывать эту DLL, иначе вы не сможете открыть диалоговое окно (подобное приведенному ниже) в нескольких приложениях одновременно.

Библиотеки DLL позволяют модулировать и повторно использовать код, что означает, что разработчикам не нужно тратить время на написание кода с нуля для выполнения рутинных или общих функций. И хотя разработчики будут создавать свои собственные библиотеки DLL для установки вместе со своими приложениями, подавляющее большинство DLL, вызываемых приложениями, на самом деле связаны с Windows или с дополнительными пакетами, такими как Microsoft .NET Framework или Microsoft C ++ Redistributables. Другим большим преимуществом такой модуляции кода является то, что обновления легче применять к каждой DLL, чем ко всему приложению, особенно если эти DLL не исходили от разработчика приложения. Например, когда Microsoft обновляет определенные библиотеки DLL в своей .NET Framework, все приложения, использующие эти библиотеки DLL, могут немедленно воспользоваться преимуществами обновленной безопасности или функциональности.

СВЯЗАННЫЕ С: Что такое Microsoft .NET Framework и почему он установлен на моем компьютере?

Загруженные библиотеки DLL могут быть устаревшими

Итак, имея некоторое представление о библиотеках DLL, почему бы не загрузить их из Интернета, если одна из них отсутствует в вашей системе?

Наиболее частая проблема, с которой вы столкнетесь с загруженными библиотеками DLL, заключается в том, что они устарели. Многие сайты, посвященные библиотекам DLL, получают свои библиотеки DLL, просто загружая их со своих компьютеров или компьютеров своих пользователей. Вероятно, вы уже видите проблему. Большинству этих сайтов нужен только ваш трафик, и после загрузки DLL у них мало стимулов для обеспечения актуальности файла. Добавьте к этому, что поставщики обычно не публикуют обновленные библиотеки DLL в виде отдельных файлов, и вы увидите, что даже сайты, которые  пытаются поддерживать файлы в актуальном состоянии, вряд ли будут очень успешными.

Еще одна проблема заключается в том, что библиотеки DLL обычно интегрируются в пакеты. Обновление одной DLL в пакете часто сопровождается обновлениями других связанных DLL в том же пакете, что означает, что даже в том маловероятном случае, если вы получите обновленный файл DLL, вы не получите связанных файлов, которые также имеют был обновлен.

Загруженные библиотеки DLL могут быть заражены

Хотя это и менее распространено, потенциально гораздо более серьезная проблема заключается в том, что библиотеки DLL, которые вы загружаете из источников, отличных от поставщика, иногда могут быть загружены вирусами или другими вредоносными программами, которые могут заразить ваш компьютер. Это особенно верно для сайтов, которые не слишком заботятся о том, где они берут свои файлы. И эти сайты не собираются изо всех сил рассказывать вам о своих рискованных источниках. На самом деле пугает то, что, загружая зараженный файл DLL, вы рискуете - по самой природе файлов DLL - предоставить этому файлу более глубокий доступ, чем может получить обычный зараженный файл.

СВЯЗАННЫЕ: Какой лучший антивирус для Windows 10? (Достаточно ли хорош Защитник Windows?)

Хорошая новость заключается в том, что хорошее антивирусное приложение в реальном времени обычно может обнаруживать эти зараженные файлы DLL до того, как они фактически сохраняются в вашей системе, и предотвращает их нанесение какого-либо ущерба. Тем не менее, вы должны помнить, что даже отличная антивирусная программа может не обеспечить вам идеальной защиты. Если вы приобретете привычку загружать опасные файлы, в какой-то момент они наверняка вас настигнут. Лучше всего избегать этих сайтов DLL.

Скорее всего, они все равно не решат вашу проблему

Хотя возможно, что только один файл DLL на вашем компьютере был поврежден или удален, более вероятно, что другие DLL или связанные файлы приложений также повреждены или отсутствуют. Причина, по которой вы получаете сообщение об ошибке в одном конкретном файле, заключается в том, что это первая ошибка, с которой приложение столкнулось до сбоя, и вы просто не получаете уведомления об остальных. Это может быть правдой независимо от причины проблемы.

СВЯЗАННЫЙ: Объяснение плохих секторов: почему жесткие диски становятся плохими секторами и что вы можете с этим сделать

Почему библиотеки DLL могут отсутствовать или повреждаться? Возможно, другое ошибочное приложение или обновление попытались заменить файл и потерпели неудачу, или заменили его устаревшей копией. Это может быть ошибка при установке вашего основного приложения или такого пакета, как .NET. Возможно, у вас даже есть другая проблема - например, наличие битых секторов на жестком диске - которая мешает правильной загрузке файла.

Как я могу исправить мою ошибку DLL?

Единственный способ получить стабильную, актуальную и чистую DLL - это получить ее из источника, из которого она возникла. Обычно таким источником будет:

СВЯЗАННЫЕ: Как сканировать (и исправлять) поврежденные системные файлы в Windows

  • Ваш установочный носитель Windows . Маловероятно, что вы сможете просто скопировать файл DLL со своего установочного носителя, но у вас есть быстрый вариант, чтобы попробовать, прежде чем делать что-то столь радикальное, как повторный запуск Windows. Вы можете использовать средство защиты ресурсов Windows (часто называемое средством проверки системных файлов или SFC), которое будет сканировать и исправлять поврежденные или отсутствующие системные файлы в Windows. У вас должен быть под рукой установочный носитель при запуске инструмента на случай, если потребуется скопировать оттуда файл. (Если у вас нет установочного диска, вы можете скачать его здесь.)
  • Пакеты Microsoft .NET Framework . Несколько версий .NET автоматически устанавливаются вместе с Windows, и многие приложения также устанавливают файлы из этих пакетов. Вы можете прочитать нашу статью о .NET framework, в которой также есть несколько советов по поиску и устранению связанных проблем.
  • Различные распространяемые пакеты Microsoft Visual C ++ . В зависимости от используемых вами приложений на вашем компьютере может быть установлено несколько версий распространяемого пакета C ++. Иногда бывает сложно сузить круг причин, но лучше всего начать с нашей статьи о распространяемых компонентах C ++, в которой также есть несколько шагов по устранению неполадок и ссылки, по которым вы можете загрузить самые свежие версии прямо из Microsoft.
  • Приложение, с которым поставляется DLL . Если DLL была установлена ​​вместе с приложением, а не была частью отдельного пакета, лучше всего просто переустановить приложение. Некоторые приложения позволяют выполнить восстановление вместо полной переустановки. Любой вариант должен работать, поскольку при восстановлении обычно ищут отсутствующие файлы в установочных папках.

Если все это не помогает, вы можете связаться с поставщиком приложения и запросить копию отдельного файла DLL. Некоторые компании открыты для этого запроса; некоторые нет. Если вы столкнетесь с компанией, которая не предоставляет отдельные файлы, они, по крайней мере, могут предложить другие предложения по решению вашей проблемы.