Где хранятся DLL файлы в Windows 7

Суровая реальность

Поначалу схема вроде бы заработала как надо. Однако вскоре выяснилось, что разные программы желают использовать отличающиеся версии одной и той же DLL, несовместимые друг с другом (проблема получила название DLL Hell — «ад DLL»). Пришлось дозволить им это делать, внедрив для разрешения конфликтов технологию Side-by-Side Assembly (сокращённо SxS), начиная с Windows XP.

В итоге вышло так, что многие мало-мальски серьёзные приложения засовывают в операционную систему свои собственные динамически подключаемые библиотеки. Или те версии стандартных системных библиотек, которые им по вкусу. Или вообще поди разбери что именно.

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

Хотя, конечно, драйверы, кодеки, стандартные библиотеки Windows используются по-прежнему всеми, иначе ОС работать не сможет. (Но она через некоторое время действительно не может — из-за вопиющего захламления и невыносимой путаницы. Потому-то и требуется периодическая переустановка.)

Как с этим жить

Во-первых, предупреждать о попытках нехороших DLL отправлять в интернет украденные у вас данные может толковый брандмауэр (firewall). Что-нибудь вроде Comodo Firewall (www.comodo.com/home/internet-security/firewall.php), который пристально наблюдает за всем происходящим.

Во-вторых, для обнаружения шпионских Dynamic-Link Library, невидимых в обычном списке запущенных процессов, предназначена бесплатная программа Spy Dll Remover (securityxploded.com/spydllremover.php), позволяющая скрупулёзно инспектировать содержимое оперативной памяти, выявлять подозрительные динамические библиотеки и отслеживать, где какой файл *dll окопался.

Итак, динамически подключаемые библиотеки задуманы как своеобразные исполняемые файлы, взаимодействующие не с человеком, а с другим софтом в качестве дополнительных модулей. Драйверы позволяют операционной системе работать с железками, кодеки вызываются медиаплеерами, да и в Windows API задействованы всякие kernel32.dll, shell32.dll и вроде того.

В идеале одна и та же DLL предназначена для вызова из разных приложений, что сокращает объём поглощаемых при работе ресурсов, но на практике картина далека от совершенства.

vanilinkin, специально для xBB.uz, 01.11.2012

Предыдущие публикации:

  • Файловая система «новой технологии» NTFS
  • Табличный процессор Microsoft Excel
  • Ubuntu 12.10
  • Ubuntu 12.10. Часть 2
  • Ubuntu 12.10. Часть 3
  • Расширяемая оболочка Windows PowerShell
  • Браузер Internet Explorer от Microsoft
  • Браузер Internet Explorer от Microsoft. Часть 2
  • Apple: чехлы для iPhone и прочие аксессуары
  • Как происходит поисковая оптимизация сайта

Последнее редактирование: 2012-11-01 13:40:57

Метки материала: библиотеки, dll, библиотеки dll, по, windows, софт, программы для компьютера, информационные технологии, программное обеспечение, soft, программирование, ит, it, компьютерные технологии, software, операционная система windows, софт для windows, виды по

Структура проекта DLL

⇐ ПредыдущаяСтр 34 из 59

Для создания динамической библиотеки в Репозитории Delphi имеется специальный шаблон — DLL Wizardрасположенный на странице New Репозитория. В отличие от проекта обычного приложения, проект DLL состоит всего из одного исходного файла. Впоследствии к нему можно добавлять отдельные модули и формы.

Исходный файл проекта динамической библиотеки

library Project1;

uses SysUtils, Classes;

{$R *.res}

Для определения типа проекта используется ключевое слово library. За словом Library следует правильный идентификатор, но в отличие от объявления модуля он не обязан совпадать с именем файла: имя DLL определяется именем DLL-файла, а не идентификатором, следующим за Library. При компиляции такого проекта динамической библиотеки создается файл с расширением dll.

Сразу за заголовками экспортируемых подпрограмм должна следовать директива Export, которая указывает компилятору на необходимость выработки специального кода пролога/эпилога. В разделе описаний DLL могут объявляться типы (в том числе и классы), константы и переменные, но они остаются скрытыми от вызывающей программы и могут использоваться только внутри DLL. В разделе описаний помимо стандартных для обычной программы объявлений используется специальный раздел объявления экспортируемых подпрограмм. Этот раздел начинается зарезервированным словом Exports, за которым через запятую перечисляются имена экспортируемых подпрограмм.

Блок begin…endназывается блоком инициализации библиотеки и предназначен для размещения кода, который автоматически выполняется при загрузке DLL. Между секцией uses и блоком инициализации можно располагать исходный код функций динамической библиотеки и их объявления. При этом можно использовать любые конструкции языка Object Pascal (Delphi), а также применять формы и компоненты. Для каждой подпрограммы помимо имени в заголовке DLL указывается присвоенный ей целочисленный индекс (целое число в диапазоне от 0 до 32767). Это позволяет вызывающей программе ссылаться не на имя, а на индекс подпрограммы и тем самым уменьшить затраты времени на установление с ней связи.

Delphi предоставляет возможность определить внешнее имя экспортируемой подпрограммы отличное от ее настоящего имени. Для этого в списке Exports добавляется слово name и внешнее имя в апострофах:

Exports MyFunc index I name ‘NEWFUNC’;

Функции из DLL-библиотеки могут вызываться как из приложений, разработанных в Delphi, так и из приложений, написанных на других языках программирования, таких, как C++.

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

1) register;

2) pascal;

3) cdecl;

4) stdcall;

5) safecall.

Способ передачи параметров указывается через точку с запятой после описания функции. Например: function F1 (X, Y, Z: Real): Heal; stdcall.

Различные способы передачи параметров определяют порядок передачи параметров (слева направо или справа налево), а также указывают, кто будет освобождать память стека (вызываемая или вызывающая процедура). При использовании DLL-библиотек в качестве компонентов, вызываемых из приложений на других языках программирования, следует использовать соответствующий модификатор вызова. Для приложений на C++ применяется модификатор вызова stdcall1.

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

Экспорт функций может выполняться тремя способами:

— по имени функции, используемому в DLL-библиотеке;

— по имени функции. заданному как имя экспорта;

— по присвоенному функции индексу.

Для того чтобы присвоить функции некоторый индекс, его следует указать в секции exports после имени функции с ключевым словом index. Для того чтобы экспортируемая функция вызывалась по имени, отличном от имени, используемого в DLL-библиотеке, в секции exports после имени функции следует указать ключевое слово name и новое имя экспорта для данной функции.

DLL — библиотека не является выполняемым модулем. Для получения ее кода достаточно произвести компиляцию проекта. Это можно сделать, выполнив команду меню Рrоject | Compile <имя_проекта> или нажав клавиши Ctrl+F9.

Date: 2015-06-06; view: 403; Нарушение авторских прав

Понравилась страница? Лайкни для друзей:

Причины ошибок в работе библиотек DLL Windows

Так как каждая библиотека отвечает за конкретную функцию, причина ошибки зависит от того, какой файл DLL не отвечает. Наиболее частая неполадка происходит с Windows.dll – это главная системная библиотека, отвечающая за запуск всех приложений и самой операционной системы.

Существуют следующие типы ошибок DLL:

  • «Файл не найден». Возможно, вы удалили нужную библиотеку, переименовали или переместили её в другое место на жестком диске;
  • «Файл отсутствует». Такое сообщение появляется в том случае, если система не может найти нужный объект на диске и часто причиной такой ошибки является работа вредоносного ПО, которое заменило программный код в библиотеке;
  • «Нарушение прав доступа к файлу». С этим типом неполадки пользователи сталкиваются при попытке включения игры. Вместо запуска работ ПО система выдает сообщение о невозможности получения доступа к библиотеке. К примеру, «ошибка msvcr100 DLL»;
  • «DLL не удалось зарегистрировать» — это означает, что произошла фатальная ошибка при установке приложения. Устранить неполадку поможет повторная инсталляция игры.

Большинство ошибок DLL в Windows появляется из-за установки пиратской версии ОС. Как правило, в модифицированных сборках используются вредоносные библиотеки, с которыми не могут взаимодействовать другие приложения. Если вы используете неофициальную версию Виндовс, советуем скачать на сайте Microsoft.com оригинальную копию образа ОС и установить её на свой компьютер.

Другие причины появления проблем с файлами DLL:
  • Случайное удаление файла. Часто при попытке очистить жесткий диск Windows от ненужных файлов пользователи по незнанию удаляют файлы библиотек. Также, деинсталлировать файл может другая программа (вредоносное ПО или утилита для автоматической очистки диска);
  • Отказ оборудования. Если для установки или запуска игры вы используете оптический диск и дисковод, при некачественном материале одного из компонентов может появиться фатальная ошибка, которая повреждает файл запуска с расширением DLL;
  • В системе не установлены последние обновления. Разработчики из Майкрософт всегда рекомендуют устанавливать новейшие апдейты ОС. Это позволяет избавиться от проблем не только с библиотеками, но и с ошибками, которые они провоцируют. Также, обновления защищают систему. Она становиться менее подвержена действию вирусов;
  • Проблемы с драйверами. Когда для конкретной программы или внешнего устройства, которое она использует, не установлены последние версии драйверов, пользователь сталкивается со всевозможными ошибками ОС. Одной из таких проблем может стать ошибка msvcp120 – система не может открыть приложение из-за фатальной ошибки совместимости;
  • Несовместимость технических требований игры и характеристик компьютера. В таком случае, нужно выбрать другую более старую версию приложения и переустановить его или же обновить используемую сборку ОС.

Способ 1 – Ошибочное удаление файла DLL

Если после открытия приложения ничего не происходит, а через несколько секунд появляется сообщение «ошибка msvcr100 DLL» или «ошибка msvcp120 DLL», это означает, что на компьютере нет нужной библиотеки. Возможно, она не была установлена вместе с ОС или файл был удален другой программой.

Системное окно с ошибкой выглядит следующим образом:

Посмотреть все 11 фото

Если вы столкнулись с такой проблемой, для начала рекомендуем открыть папку жесткого диска С и в графе поиска вписать название нужного DLL. Часто библиотека просто перемещена в другую папку. Исправить проблему поможет её помещение в директорию C\Windows\System32 (для 32-х разрядный версий ОС) или в C\Windows\SysWoW64 (для 64-х разрядных сборок).

В случае, если на диске «С» вы не нашли нужный файл, на сайте Майкрософт нужно скачать апдейт для программного пакета Visual C++ 2013. Эта утилита настраивает взаимодействие всех системных файлов и исправляет существующие ошибки.

Для скачивания пакета перейдите по ссылке https://support.microsoft.com/ru-ru/help/3179560/update-for-visual-c-2013-and-visual-c-redistributable-package, в таблице выберите свою страну и язык, а затем кликните на ссылке для скачивания.

После инсталляции обновления перезагрузите компьютер и попробуйте повторно запустить программу. Если этот вариант решение не помог, переходите к следующему методу.

Способ как исправить ошибки DLL – Регистрация библиотеки вручную

Бывают случаи, когда нужна библиотека есть на компьютере пользователя и находится в правильной папке, но программа все равно её «не видит». После установки пакета обновления Visual C++, как правило, тоже ничего не происходит. Как быть в этом случае?

Исправить такую ошибку DLL в Windows 10 и Windows 7 поможет регистрация библиотеки на сервере Майкрософт. Скорее всего, на вашем компьютере установлена корректная версия DLL, но из-за проблем со связью копии ОС и сервером разработчика возникают подобного рода проблемы.

Пользователь может самостоятельно запустить работу службы регистрации и менее чем за 1 минуту добавить существующую библиотеку в список «пригодных» для использования файлов.

Следуйте инструкции:

  • Одновременно нажмите на клавиши Win+R для открытия окна «Выполнить»;
  • Теперь в текстовом поле введите «CMD» и подтвердите действие;

  • В результате, откроется окно командной строки, с помощью которого и будет проводиться регистрация библиотеки. В новой строке введите указанную на рисунке ниже команду. Изменяйте название библиотеке в зависимости от того, какое её имя указано в ошибка запуска приложения.

Посмотреть все 11 фото

Важно! Для выполнения регистрации вы должны быть авторизованы в учетной записи администратора системы и компьютер необходимо подключить к интернету.

Способ 3 – Запуск среды восстановления

Еще один способ быстрого исправления всех ошибок системы – это использование утилиты восстановления. Запустить нужное окно можно с помощью среды Виндовс. Откройте окно параметров нажатием клавиш Win-I.

Затем откройте вкладку «Обновление и безопасность»»Восстановление». В правой части окна промотайте страничку вниз и в разделе «Особые варианты загрузки» кликните на «Перезагрузить сейчас».

Заметьте! В этом же окне вы можете сбросить настройки ОС к заводским параметрам. Если вы хотите полностью восстановить систему и готовы к удалению все программ и файлов, выбирайте этот пункт. С его помощью есть больше шансов навсегда избавиться от ошибок, которые связан с системными библиотеками.

После выбора особых вариантов загрузки и повторного запуска компьютера вы увидите не рабочий стол системы, а специальное окно Troubleshooting (решение неполадок). Кликните на указанную ниже плитку, чтобы запустить автоматическое сканирование и исправление:

После повторной перезагрузки ОС система ошибки будут исправлены. Пользовательские файлы удалены не будут.

Владельцам Windows 7 недоступна возможность автоматического исправления в режиме перезагрузки, но можно запустить встроенную утилиту диагностики. Для этого зайдите в окно панели управления и в строке поиска введите «Средство проверки». Кликните на первый результат поисковой выдачи.

Следуйте инструкции в окне встроенного помощника для выявления проблем и их исправления:

Способ 4 – Установка отсутствующих DLL и обновление программ

Ранее м уже рассмотрели варианты восстановления ошибочных библиотек. Однако, если в Windows XP, 7, 10 возникла ошибка Kernel32 DLL, рекомендуется переустановить файл вручную. Рассмотрим, как исправить такого рода неполадку.

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

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

Среди надежных ресурсов для скачивания системных DLL можно выделить:

  • DLL.ru;
  • Dll-files.ru;
  • Download-dll.ru.

Пользователю необходимо ввести имя недостающей библиотеки и начать её скачивание. Далее поместите полученный файл в системную папку System32 или SysWOW64, в зависимости от разрядности установленной копии ОС. При следующем открытии программы ошибка исчезнет.

Также, рекомендуем обновить программу, с которой возникли неполадки. Часто даже после многократной замены файла библиотеки не удается избавиться от ошибок запуска или работы программы. Это говорит о ом, что в системе установлена несовместимая версия игры или прикладного приложения.

Способ 5 – Переустановка приложения

Еще один способ решения – это простая переустановка программы. Возможно, после возникновения проблем с DLL утилита не «видит» нового файла библиотеки, потому необходимо деинсталлировать программу.

Удаляйте приложения только через окно Панель управления – Установка и удаление программ. После деинсталляции советуем также поискать на диске «С» папки с названием игры, которые могли быть не удалены. Затем перезагрузите компьютер, установите ПО ее раз и попробуйте запустить его. Новая библиотека должна распознаться без проблем.

Способ 6 – Обновление драйверного ПО

Обновление драйверного ПО позволяет устранить ошибки несовместимости установленных программ, аппаратного оборудования и операционной системы. Рассмотрим, как исправить ошибку HAL DLL в Windows 7, 10, ведь именно этот тип неполадки появляется из-за несовместимости компонентов.

Необходимо установить последние обновления для всех компонентов ОС. Зайдите в Диспетчер задач Виндовс. В седьмой версии это можно сделать с помощью окна панели управления, в десятой версии нужно воспользоваться окном поиска по системе.

В окне Диспетчера кликните правой кнопкой мышки на названии компьютера, а затем выберите поле «Обновить конфигурацию». Для установки новых версий драйверов на компьютере должно быть установлено соединение с интернетом.

Способ 7 – Удаление вирусов

Просканируйте систему встроенным Защитником или другим установленным антивирусом. Если в результате сканирования обнаружится, что вирус — это и есть ошибочная библиотека, удалите её с компьютера и загрузите пакет обновления Visual C++ на сайте Майкрософт.