Які DLL файли, і чому один відсутній з мого комп'ютера?
Коли ви отримуєте повідомлення про помилку, що Windows не може знайти конкретний файл DLL, це може бути дуже спокусливим завантаженням файлу з одного з численних DLL-сайтів. Ось чому ви не повинні.
Що таке DLL?
Перш ніж розпочати роботу над тим, чому ви не повинні завантажувати файли DLL (Dynamic Link Library) з Інтернету, давайте спочатку подивимося, що таке 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, можуть негайно скористатися оновленою безпекою або функціональністю.
Завантажені бібліотеки DLL можуть бути застарілими
Отже, з невеликим розумінням бібліотек DLL під нашими поясами, чому б не завантажувати їх з Інтернету, коли відсутній у вашій системі?
Найбільш поширеною проблемою, з якою ви зіткнетеся з завантаженими DLL, є те, що вони застаріли. Багато DLL-сайтів отримують свої бібліотеки DLL, просто завантажуючи їх з власних комп'ютерів або комп'ютерів своїх користувачів. Можливо, ви вже бачите проблему. Більшість цих сайтів просто хочуть, щоб ваш трафік, і як тільки DLL завантажується, вони не мають достатнього стимулу до того, щоб файл був оновлений. Додайте до цього, що постачальники зазвичай не оприлюднюють оновлені бібліотеки DLL як окремі файли, і ви можете бачити, що навіть сайти, які спробуйте щоб зберігати файли в актуальному стані, навряд чи буде дуже успішним.
Є ще одна проблема, що DLL-файли зазвичай інтегровані в пакети. Оновлення до однієї DLL в пакеті часто супроводжується оновленнями інших пов'язаних DLL-файлів в одному пакеті, що означає, що навіть у малоймовірному випадку ви отримаєте актуальний DLL-файл, ви не отримаєте пов'язані файли, які також мають оновлено.
Завантажені бібліотеки DLL можуть бути заражені
Хоч і менш поширеною, потенційно набагато гіршою проблемою є те, що DLL, які ви завантажуєте з інших джерел, ніж постачальник, іноді можуть завантажуватися з вірусами або іншими шкідливими програмами, які можуть заразити ваш комп'ютер. Це особливо вірно на сайтах, які не надто обережні щодо того, де вони отримують свої файли. І це не схоже на те, що ці сайти підуть зі свого шляху, щоб розповісти вам про свої ризиковані джерела. Дійсно страшна частина полягає в тому, що якщо ви завантажуєте інфікований DLL-файл, ви ризикуєте за самою природою DLL-файлів, що надають цей файл більш глибокий доступ, ніж може отримати звичайний заражений файл.
Доброю новиною тут є те, що хороше антивірусне програмне забезпечення в реальному часі зазвичай може виявляти ці інфіковані файли DLL, перш ніж вони насправді збережуться у вашій системі, і не дозволять їм завдати шкоди. Тим не менш, ви повинні пам'ятати, що навіть велика антивірусна програма не може забезпечити вам ідеальний захист. Якщо ви зробите звичку завантажувати ризиковані файли, це, швидше за все, наздожене вас у якийсь момент. Краще всього уникати цих сайтів DLL.
Вони, напевно, не вирішать вашу проблему
Хоча можливо, що тільки один файл DLL на вашому комп'ютері був пошкоджений або видалений, більш ймовірно, що інші DLL-файли або пов'язані з ними файли програм також пошкоджені або відсутні. Причина того, що ви отримуєте помилку про один конкретний файл, це те, що це перша помилка, з якою зіткнулася програма перед збоєм, і ви просто не отримуєте повідомлення про решту. Це може бути вірним незалежно від причини проблеми.
Чому DLL можуть бути відсутніми або пошкодженими? Можливо, інший невідомий додаток або оновлення спробували замінити файл і не вдалося, або замінити його на застарілу копію. Це може бути помилкою в установці вашого головного додатка або в пакеті, подібному .NET. Можливо, навіть на вашому жорсткому диску ви маєте інші проблеми, подібні до поганих секторів, які запобігають правильному завантаженню файлу.
Як я можу виправити помилку DLL?
Єдиний спосіб переконатися, що ви отримаєте стабільну, сучасну та чисту бібліотеку DLL - це отримати її через джерело, з якого він виник. Як правило, це джерело буде:
- Інсталяційний носій Windows. Малоймовірно, що ви зможете просто скопіювати файл DLL з інсталяційного носія, але у вас є можливість швидко спробувати, перш ніж робити щось настільки рішуче, як повторне встановлення Windows. Можна скористатися засобом захисту ресурсів Windows (який часто називають перевіркою системних файлів або SFC), який сканує та виправляє пошкоджені або відсутні системні файли у Windows. Ви повинні мати зручний інсталяційний носій під час запуску інструменту, на всякий випадок, якщо потрібно скопіювати файл звідти. (Якщо у вас немає інсталяційного диска, його можна завантажити тут.)
- Пакунки Microsoft .NET Framework. Кілька версій .NET автоматично встановлюються разом з Windows, і багато програм також встановлюють файли з цих пакетів. Ви можете ознайомитися з нашою статтею про .NET framework, в якому також є рекомендації щодо пошуку та усунення пов'язаних з цим проблем.
- Різні пакети для розповсюдження Microsoft Visual C ++. Залежно від застосованих програм, на вашому комп'ютері може бути встановлено кілька версій C ++ Redistributable. Іноді може бути важко звузити, який є винуватцем, але хорошим місцем для початку є наша стаття про C ++ Redistributables, яка також містить кілька кроків і посилань на виправлення, де можна завантажити найновіші версії прямо з Microsoft.
- Додаток, з яким DLL прийшов. Якщо DLL була встановлена разом з програмою, а не є частиною окремого пакета, краще всього перевстановити програму. Деякі програми дозволяють виконувати ремонт замість повної перевстановлення. Будь-який з цих варіантів має працювати, оскільки ремонт зазвичай шукає відсутні файли в інсталяційних папках.
Якщо все не вдасться, ви зможете зв'язатися з постачальником програм і запитати копію окремого файлу DLL. Деякі компанії відкриті для цього запиту; деякі - ні. Якщо ви зіткнетеся з компанією, яка не надасть окремих файлів, вони можуть принаймні запропонувати інші пропозиції для вирішення вашої проблеми.