Регистрируем файл DLL в ОС Windows - TurboComputer.ru
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд (пока оценок нет)
Загрузка...

Регистрируем файл DLL в ОС Windows

Регистрация DLL в Windows: что и как

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

Правила установки и регистрации библиотек в Windows.

Поиск библиотеки

Первый шаг после сообщения об ошибке – вызов меню поиска через кнопку Пуск в windows 7 или значок лупы в десятке и восьмерке. В первом случае строка будет находиться уже на главном меню внизу в левом блоке. Во втором случае это будет отдельное выпадающее меню. В поисковую строку необходимо ввести имя библиотеки с расширением без указания пути. Например, если ошибка ссылается на C://Users/Nastroyvse/video.dll, то в строке нужно написать лишь video.dll. В случае успеха в Проводнике или непосредственно в окне поиска отобразится новый путь к указанному файлу. Далее возможно два пути. Первый – скопировать этот файл в указанную ошибкой папку и перезапустить компьютер. При вызове программа должна увидеть эту библиотеку. Если этого не произошло или данная библиотека отсутствует на компьютере, придется пройти регистрацию.

Где скачать библиотеки

Заветные DLL файлы можно получить из разных источников. Желательно поискать их на официальном сайте производителя или программы. Если за время эксплуатации обновилась версия софта, желательно его скачать и провести переустановку. Вместе с ней установятся и новейшие версии библиотек. Если же сайт программы не работает или отсутствуют обновления, на помощь придут профильные сайты с коллекциями этих самых файлов dll. Достаточно ввести в поисковую строку сайта название библиотеки, и вы получите прямую ссылку для скачивания. Перед проведением регистрационных действий обязателен прогон актуальными антивирусными базами. Для этого нужно навести на скачанный файл правой кнопкой мыши и выбрать опцию проверки антивирусом. Если файл чистый – смело устанавливайте. Среди популярных хранилищ:

При скачивании файлов обращайте внимание на разрядность и версию операционной системы. Узнать их можно в меню «Мой компьютер» в Windows 7 или на вкладке Компьютер Проводника в Windows 10. Для вызова сведений нажмите правой кнопкой мыши или тачпада. В выпавшем контекстном меню нажать уже левой кнопкой пункт «О системе». Неправильно подобранная библиотека будет функционировать с ошибками или перестанет запускаться вовсе.

Место установки изменить нельзя

После скачивания правильной версии ее необходимо установить в системную корневую папку. Ее название зависит от разрядности операционной системы. Для 32-разрядых систем это C:/Windows/System32, а для 64-разрядных – C:/Windows/SysWOW64. На компьютере могут присутствовать обе папки. У каждой из них есть свой регистратор библиотек. При регистрации файлов нужно открывать правильный. Всего же способ регистрации существует 3.

Читайте также:  Решение проблемы с отсутствием звука в Windows 7

Заключается в вызове регистратора regsvr.exe комбинацией этих клавиш. Откроется строка «Выполнить», куда нужно вписать такую команду: regsvr32.exe путь_к_файлу_dll. Желательно указывать и путь к regsvr32, чтобы не вызывать путаницу.

После нажатия ОК система отобразит сообщение о результате обработки запроса.

Командная строка

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

Ручная регистрация

Для этого нужно выделить только что установленный или замененный файл dll правой кнопкой мышки и выберите опцию открытия с помощью. В предложенном меню нужно вручную или из предложенного списка выбрать нужный regsvr32.

Regsvr32

Regsvr32 (Microsoft Windows Register Server) — это системная утилита, предназначающаяся для регистрации и отмены регистрации элементов управления ActiveX , компонентов фильтров (кодеков) и компонентов библиотек DLL в системе Windows посредством внесения изменений в реестр.

Концепция динамических библиотек родилась из концепции overlay-модулей еще во времена, когда оперативная (физическая) памяти была достаточно дорога. Именно в то время родилась идея “сбрасывать” (выгружать) неиспользуемый в данный момент машинный код приложения в более дешевое внешнее хранилище данных (файл подкачки) и загружать его лишь в момент использования, что позволяло более эффективно использовать память. Дальнейшее развитие данной концепции привело к появлению динамически загружаемых библиотек (называемых упрощенно динамическими библиотеками), которые упростили архитектуру приложения, привело к решению проблемы дублирующегося кода, ведь вместо того, чтобы каждой программе использовать один и тот же код (к примеру, диалоговых окон), проще вынести его в отдельный файл (библиотеку DLL), обеспечивающий данный функционал для множества приложений, и один раз загрузив его в оперативную память, просто предоставлять тем или иным приложениям. Поэтому, характерная особенность динамической библиотеки заключается в том, что она может использоваться сразу несколькими приложениями, а система обеспечивает присутствие в памяти всего-лишь одной копии кода динамической библиотеки для всех приложений, которые содержат ссылки на функции данной библиотеки.
Начиная с Windows XP, в зависимости от разрядности ОС, утилита regsvr32.exe располагается либо только в директории %SystemRoot%System32 для 32-битных систем, либо в папках %SystemRoot%System32 и %SystemRoot%SysWOW64 для 64-битных (присутствуют две разные версии программы). Представляет собой утилиту командной строки, то есть, иными словами, работает с консолью и может использоваться в сценариях.

Читайте также:  Запуск старых игр на Windows 7

Смысл регистрации библиотек и элементов управления

По какой причине для использования функций DLL в системе непременно требуется их регистрация? Я думаю, вполне уместно будет привести аналогию с системной переменной пути ( %PATH% ). Как Вы помните, файлы, которые располагаются в директориях, указанных в переменной %PATH% , можно запускать из командной строки без указания полного пути к файлу, в противном случае их невозможно будет запустить из произвольной директории системы, командный интерпретатор их попросту не найдет. По аналогии и библиотеки, которые содержат функции, широко используемые различными программами, должны быть “объявлены” в системе, иначе программы не смогут их найти. Можно утверждать, что при вызове функции из образа исполняемого файла, загрузчик Windows (менеджер, который отвечает за выделение памяти, подключение различных функций из образов памяти и прч.) должен знать откуда можно подгрузить библиотеку, содержащую требуемую функцию.
Но что такое регистрация в системе применительно к библиотеке DLL? Это определенный алгоритм действий по модификации различных разделов реестра и каталогов файловой системы, результатом которого является “видимость” библиотеки приложениями. Если библиотека “сторонняя” (не системная), то регистрация библиотеки выполняется на этапе инсталляции приложения, для обслуживания функций которого она предназначается. В большинстве случаев сам процесс регистрации библиотеки выполняется при помощью вызова внешних специализированных системных утилит, либо определенной последовательности специализированных функций Windows API.

Можно рассмотреть простой пример, когда произвольно установленная в системе программа использует функцию из библиотеки, не “объявленной” в системе. В подобной ситуации загрузчик Windows на начальной стадии инициализации виртуального адресного пространства процесса выполняет импорт всех библиотек, требуемых загружаемой на выполнение программе. Если одна из библиотек, прописанных в таблице импорта исполняемого образа, отсутствует, то загрузчик выдает такое вот сообщение об ошибке:

Ошибка сообщает нам о том, что загрузчик образа cDSsvc.exe не смог найти библиотеку MFC71.DLL , необходимую ей для функционирования. Один из способов устранения данного класса ошибок состоит в повторной инсталляции программы, в ситуации, когда файл искомой библиотеки входит в состав какого-либо дистрибутива, поскольку библиотека инсталлируется автоматически скриптом инсталляции. Если библиотека входит в состав другого пакета, например Microsoft Visual C++ 2010 x64 Redistributable , то переустановить необходимо именно его. Если же описанными способами ошибку исправить все же не удается, тогда нам на помощь приходит утилита Regsvr32 .

Алгоритм регистрации библиотеки

Regsvr32 при помощи функции LoadLibrary загружает библиотеку и, в зависимости от того, хотите вы зарегистрировать либо разрегистрировать (отменить регистрацию) библиотеку, пытается найти точку входа и вызвать функцию DllRegisterServer() либо DllUnRegisterServer() данной библиотеки и смотрит на результат. Более того, при запуске утилиты с параметром “/i” работает дополнительная логика и regsvr32 будет искать в библиотеке уже точку входа функций DllInstall / DllUnInstall . Все это говорит в пользу того, что существуют определенные требования к структуре DLL, которую вы хотите регистрировать с помощью regsvr32. Для того, чтобы управляющий элемент можно было зарегистрировать с помощью regsvr32, в DLL должны быть, как минимум, реализованы (экспортированы) функции DllRegisterServer, DllUnregisterServer, а при необходимости выполнения специфичных действий еще и функции DllInstall, DllUnInstall. Функции DllRegisterServer / DllUnregisterServer содержат логику, которая фактически и выполняет регистрацию библиотеки в системе, добавляя записи в реестр, требующиеся для управляющего элемента. Функции DllInstall / DllUnInstall служат для выполнения дополнительных действий, которые планирует произвести автор DLL. Поэтому помните, что:

Читайте также:  Активация сглаживания шрифтов в Windows 10

Давайте посмотрим, что же происходит в случае, когда, к примеру, не определена функция DllRegisterServer:

В этом случае мы видим на экране ошибку: “Модуль . загружен, но точка входа DllRegisterServer не найдена”. Но, давайте как перейдем, непосредственно, к самому процессу регистрации.

Новый метод

Как мы уже говорили, для регистрации библиотеки используется функция DllRegisterServer(). Функция проверяет 128-битный глобальный идентификатор (GUID, Global Unique ID) всех объектов COM/ActiveX, обнаруженных в библиотеке и последовательно прописывает информацию о них в реестр. GUID ни что иное как 128-битный глобальный идентификатор (GUID, Global Unique ID), идентифицирующий конкретный объект класса библиотеки. Регистрация объектов необходима, поскольку программы работают не с самими файлами DLL/OCX/ACX, а с объектами, представляющими определенный набор интерфейсов.
Для целей регистрации DLL используется следующие ветви реестра:

  • ветвь HKLMSOFTWAREClassesCLSID при регистрации COM-объектов библиотек для всех пользователей системы;
  • ветвь HKCUSOFTWAREClassesCLSID при регистрации COM-объектов библиотек только лишь для текущего пользователя;
  • ветвь HKLMSOFTWAREWow6432NodeClassesCLSID для регистрации 32-битных DLL в 64-битных ОС Windows;
  • Следует помнить, что некоторые расположения в реестре являются всего-лишь ссылками:

    В ветви HKEY_CLASSES_ROOTCLSID создается ключ с именем, эквивалентным идентификатору GUID. GUID применительно к СОМ называется идентификатором класса. Чтобы отличать идентификаторы классов от других идентификаторов, для них используют наименование CLSID . Примером значения CLSID может служить строка вида <2DB47AE5-CF39-43C2-B4D6-0CD8D90946F4>. В глобальном смысле данные уникальные номера “не повторяются” и уникально идентифицируют компоненты системы, что говорит нам об уникальности объекта класса библиотеки в пределах системы. Подразделами в этих ветках реестра могут быть:

    Ссылка на основную публикацию
    Adblock
    detector