Основные системные DLL файлы, Что делать, если какого-то из них не хватает?
Основные системные DLL файлы. Что делать, если какого-то из них не хватает?
Думаю, для большинства пользователей не является секретом то, что внутри операционная система Windows состоит из большого количества разнообразных компонентов, многие из которых реализованы в виде DLL-библиотек. Некоторые из них более важны, некоторые - менее. О том, для чего нужны некоторые системные DLL-библиотеки, я сейчас и расскажу.
Говорить будем о 32-битных системах, так как они в данное время более распространённые. Мы сейчас не будем говорить о том, как устроены эти DLL файлы, о том, чем они отличаются, мы просто поговорим о том, какие функции в системе они выполняют, за что они отвечают.
Системные библиотеки лежат в системной папке, поэтому они и называются системные. В более ранних версиях Windows (9x и ME) они помещались в поддиректории "System" папки с системой, в операционных системах линейки Windows NT они находятся в папке "System32". В эти папки лучше без особой надобности не лезть. И если вы встретить эти файлы где-нить будь в другом месте, то лучше их удалить, т.к. в них могут содержаться вирусы.
Для чего же пользователю знать назначение той или иной библиотеки? В самом простом случае - если система выдаст Blue Screen of Death (BSOD), чтобы можно было хотя бы примерно представить, с чем именно он связан. И, так, приступим.
Hal.dll
Эта DLL - сердце операционной системы. Расшифровывается её название как Hardware Abstraction Layer - уровень аппаратной абстракции. Именно благодаря наличию такого уровня Windows имеет возможность работы на разных аппаратных платформах. В зависимости от того, какая именно аппаратная платформа наличествует на вашем компьютере, вместо hal.dll может присутствовать один из следующих файлов: Halapic.dll, Halmps.dll, Halacpi.dll, Halaacpi.dll, Halmacpi.dll.
Kernel32.dll
Это библиотека из состава ядра операционной системы. О том, что без этой библиотеки работа ядра ОС невозможна, говорит уже само её название. Kernel32.dll отвечает за обработку памяти, операции ввода-вывода и прерывания - то есть, за все основные действия операционной системы с приложениями.
Ntdll.dll
Эта библиотека - своеобразный мост между теми библиотеками, которые работают в ядре операционной системы, и библиотеками, работающими в пользовательском режиме. Эти два режима имеют ряд существенных отличий, и без существования этой DLL'ки было бы невозможно применять многие старые приложения в новых версиях Windows - во многом совместимость между разными версиями ОС держится именно на ней.
Gdi32.dll
Немаловажная часть операционной системы Windows - это графический интерфейс пользователя, который в самых глубоких своих основах зиждется именно на этой DLL-библиотеке. Gdi32.dll предоставляет приложениям и другим библиотекам графические примитивы, которые используются для отрисовки окон и разных оконных элементов управления.
User32.dll, Comctl32.dll, Comdlg32.dll
Эти библиотеки реализуют внутри себя разные готовые элементы управления, которые потом используют для создания графического интерфейса пользовательские приложения. Собственно, в основном, именно эта тройка библиотек отвечает за тот внешний вид операционной системы, к которому вы привыкли.
Advapi32.dll
Думаю, что понятие системного реестра знакомо каждому пользователю. Вполне естественен тот факт, что ОС Windows предоставляет пользовательским приложениям специальные функции доступа к реестру, которые как раз и вынесены в Advapi32.dll.
Mpr.dll
Работа с сетью - тоже прерогатива операционной системы. Собственно, именно для работы с сетью и нужна mpr.dll. Взаимодействие с другими компьютерами в локальной сети, поддержка работы с сетевыми устройствами, поддержка соединения - вот далеко не полный список того, что ложится на плечи этой библиотеки.
Msvcrt.dll
Эту библиотеку можно тоже отнести к разряду системных, потому что без неё не запустятся многие стандартные приложения из состава Windows. Она несёт в себе ряд вспомогательных функций для работы с памятью, устройствами ввода и вывода, математическими функциями. Эта DLL должна быть хорошо знакома программистам, работавшим с Visual C++.
Это основные DLL'ки!!! Но конечно не все!
Не хватает DLL'ки... Что делать?
Наверняка каждый читатель пользователь хоть раз в жизни сталкивался с невозможностью запустить ту или иную программу по причине отсутствия необходимых динамических библиотек, в просторечье называемых DLL'ками. В большинстве случаев проблема решаема, и довольно просто.
Итак, предположим, вы запустили программу, а она вам в ответ выдала сообщение а-ля "Приложению не удалось запуститься, поскольку SuperPuperCool.dll не был найден. Повторная установка приложения может исправить эту проблему". Казалось бы, чего тут думать - система сама же и предлагает не самый кровавый вариант решения этой проблемы, нужно вот только вспомнить, где же лежал дистрибутив этой программы. Нет, система-то, конечно, тысячу раз права, если, конечно, не хватает какой-нибудь из системных библиотек.
Однако способ может не сработать - это раз. Многие разработчики элементарно забывают добавить в дистрибутив своей программы пару-тройку библиотек, которые написали не они, но которые, тем не менее, используются в их программном продукте. И тогда можно хоть сто раз переустанавливать программу - необходимых библиотек от этого больше ну никак не станет. Второй минус данного способа заключается в том, что нужен дистрибутив программы. Хорошо, если он есть у вас под рукой, а если нет? Большие дистрибутивы и скачивать накладно, и процесс установки более-менее крупных программ тоже вещь небыстрая.
В общем-то, из всего этого вытекает, что имеет смысл ещё до переустановки попробовать какой-нибудь альтернативный способ решения проблемы, а вот уж если он не "прокатит", тогда и отправляться на поиски дистрибутива нужной программы.
Способ, который я сейчас вам хочу предложить, до смешного банален. Заключается он в том, чтобы поискать нужную вам DLL-библиотеку в интернете. Да, конечно, для этого нужен доступ к Всемирной сети, однако и для скачивания дистрибутивов программ он тоже, скажем так, не помешает. Однако, как я уже говорил, скачать отдельный DLL-файл может оказаться гораздо проще, чем целый дистрибутив.
Искать DLL-файлы можно, конечно, с помощью Google, "Яндекса", "Рамблера" и прочих обычных поисковиков. Но гораздо проще воспользоваться специализированными архивами DLL-файлов, которых на бескрайних просторах Интернета появилось немало. Лично мне больше всего нравятся три следующих: dll-files.com, www.dll.ru и www.dlldll.ru.
Хотя все сайты предлагают алфавитные списки разных DLL-файлов, гораздо проще будет ввести имя нужной библиотеки в строку поиска, которая есть на главной странице. Но при выборе нужной библиотеки среди результатов поиска нужно быть внимательным: названия некоторых библиотек могут совпадать для разных программ, и нужно следить за тем, чтобы скачивалась DLL'ка именно для той программы, которая у вас не хочет запускаться. Что касается версий библиотек, то совсем не обязательно она должна совпадать с версией самой программы. Так что при прочих равных лучше скачивать самую новую - довольно высока вероятность того, что программа, нуждающаяся в более старой версии, будет работать и с этой. Только если версия библиотеки указана в самом её имени (например, msvbvm50.dll), не надо скачивать библиотеку с другим именем и более новой версией (например, msvbvm60.dll).
Если библиотека не нашлась на одном архиве, попробуйте поискать на другом, третьем, подключите Google - в общем, подойдите к её поиску творчески. Ну а если найти DLL'ку не удастся или программа не захочет с ней работать, - что ж, значит, придётся переустановить эту программу.