Несколько способов регистрации библиотеки dll в Windows

Крайне неприятная ошибка в Windows «Модуль загружен, но точка входа DLLRegisterServer не найдена» связана, как правило, с некорректным функционированием динамически подключаемой библиотеки (сокр., «.dll»), к которой обращается программа в процессе  своей работы. В результате встроенный в Windows процесс отвечающий за регистрацию библиотеки в ОС, отказывается ее принять либо не может найти. А программа, обращающаяся к неработающим модулям, соответственно, не функционирует. Потому, предлагаю разложить по полочкам данную проблему для того, чтобы понять, каким образом ее можно исправить.

Содержание

В чём суть ошибки «Модуль загружен»?

Итак, объяснение смысла данной ошибки закономерно будет начать с определения «библиотеки«. Библиотека или в некоторых языках программирования, модуль (модули) — это набор подпрограмм, используемых в разработке программного обеспечения. Проще говоря, это совокупность небольших и независимых блоков, каждый из которых является функционально законченным фрагментом кода.

Для чего они предназначены? Существует огромное количество подпрограмм или процедур, выполняющих самые разные задачи. Некоторые из них содержат стандартные для многих программ вычислительные операции. К примеру, открытие диалоговых окон в Windows или нахождение квадратного корня из любого числа — это стандартные, часто встречающиеся процедуры. Так вот, чтобы не писать код таких подпрограмм каждый раз при создании ПО, были придуманы заранее заготовленные файлы, которые получили название «библиотеки». С помощью специальной функции их можно подключить к программе, при этом исполнимый код этой библиотеки не будет внедряться в код приложения, что позволяет сэкономить память ПК.

Динамические библиотеки DLL, встраиваемые в Windows, принадлежат к модулям общего пользования (shared library). Отличительные  их особенности для пользователя состоят в следующем:

  • Функции, прописанные в таких библиотеках, могут использоваться несколькими программами одновременно;
  • Загружаются они по запросу соответствующего процесса, то есть динамически, не потребляя без надобности ресурсы ПК.

К сожалению, у DLL модулей есть и недостатки. Не будем говорить о так называемом «DLL Hell», так как на данный момент, несмотря на нарушение самого идейного принципа динамических библиотек общего пользования, разработчики Microsoft разрешили эту проблему. Гораздо важнее в данной статье отметить следующие недостатки:

  • При внесении в библиотеку изменений программы, использующие ее могут перестать работать. Этот недочет является излюбленным у распространителей вирусов. Ведь сама Windows функционирует на основе модулей и, повредив их код, можно повлиять на работу ОС.
  • При отсутствии библиотеки или ее некорректной версии программа, использующая данный модуль, соответственно, будет либо неправильно функционировать, либо откажется работать.
  • Функции, прописанные в библиотеке Dll, получают один адрес в оперативной памяти для всех процессов, вызывающих их, что упрощает эксплуатацию уязвимостей модульного метода организации ПО;

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

Таким образом, скомпоновав все вышеописанное в единое целое, мы можем раскрыть суть ошибки «Модуль загружен».  Эта проблема возникает при регистрации библиотеки в системе. Процесс «Regsvr32.exe», отвечающий за инсталлирование интерфейсов объектов в ОС, не может обнаружить функцию регистрации библиотеки «DLLRegisterServer» в проблемном dll.

  • Код функции, которая запрашивается программой, поврежден. Это может быть вызвано как некорректной версией регистрируемой вами библиотеки, так и вирусной атакой, испортившей код модуля, путь к библиотеке в реестре или ее идентификатор GUID.
  • Функция DLLRegisterServer может изначально отсутствовать в коде регистрируемой вами библиотеки;
  • Отсутствие в коде библиотеки интеграции с компонентами COM/ActiveX, управляющими реализацией dll в Windows;
  • Процесс регистрации вообще состоит в том, чтобы прописать путь к подключаемому модулю (модулям) в реестре Windows, для того, чтобы ОС могла «увидеть» библиотеку и оповестить программу, запрашивающую ее, о наличии или отсутствии определенного модуля в системе. Кроме того, каждому классу или объекту, входящему в состав подпрограммы, присваивается уникальный идентификатор GUID, он также необходим для регистрации, поскольку программы работают не с самими библиотеками dll, а с функциональными компонентами, входящими в ее состав. Это говорит о том, что при неправильной регистрации библиотеки значения, прописанные в реестре, останутся неверными, в результате ОС не сможет «опознать» библиотеку, чтобы ПО имело возможность подключить ее.

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

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

Итак, для того, чтобы самостоятельно справиться с проблемой, необходимо https://www.dll.ru/, которая была повреждена в результате действий вирусов или иных факторов. Ее название можно посмотреть в выскакивающем сообщении об ошибке.

Скачиваем библиотеки dll

Скачивая библиотеки, обязательно вначале уточните разрядность вашей версии Windows (х32/ х64). Если вы найдете и установите неподходящие файлы dll, ошибка “точка входа DLLRegisterServer не найдена” исправлена не будет. Разместите скачанные вручную файлы в папках SysWOW64 и System32, находящихся C:Windows.

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

Регистрируем библиотеки dll

  1. нажимаем win+x и находим в появившемся меню командную строку;
  2. после клика на последнюю появляется черное окно;
  3. после слова “Компьютер>” вводим слово regsvr32 и через пробел путь к проблемному файлу C:WindowsSysWOW64thumbcache.dll.
Зарегистрируйте библиотеки dll с помощью командной строки

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

Второй способ – использовать строку “Выполнить”:

  • нажимаем win+r и вызываем нужную нам строку;
  • в появившемся поле вводим название файла RegSvr32.exe и путь к отсутствующей библиотеке;
  • нажимаем OK и ждем результата.

Устанавливаем обновления для Windows

Способ, к которому можно обращаться уже после того, как вышеуказанные методы не принесли желаемого результата – обновление компонентов вашей ОС. Для этого найдите на своем компьютере Центр обновления. Просмотрите все доступные обновления и прогрузите их. Процесс долгий, но необходимый. Быть может, проблема была в изначально неправильном коде dll-файлов, и разработчики уже нашли решение на своем уровне. Не выключайте соединение с интернетом и сам ПК во время установки обновлений, иначе результата не будет. Убедитесь, что все файлы прогружены и при необходимости повторите операцию.

Часто для исправления ошибки разработчики выпускают различное дополнительное ПО: моды, патчи, пакеты установки. В  этом случае найдите и скачайте последнюю версию программного обеспечения, с которым у вас возникли проблемы. И напоследок о крайне нежелательном варианте – переустановке всей Windows. Конечно, этого без надобности не хочется делать никому, но, если система не открывает библиотеку dll, а все вышеуказанные методы уже испробованы, то сносите установленную и ставьте другую сборку ОС (из проверенных источников).

Избавляемся от сбойных обновлений Windows

Рассматриваемая нами ошибка может появляться не только в последней ОС Windows, но и в других версиях. Поэтому, следуя инструкциям, вы сможете устранить эту проблему и на своем ПК с Виндовс XP, 7 или 8.1. Для того, чтобы найти установленные системой обновления, необходимо открыть «Удаление программ».

  1. В Windows это можно сделать разными способами. Так, как ошибка появляется в разных версиях, выберите подходящий для себя. В ОС 8.1 и 10 вы можете просто выбрать правой кнопкой мыши (ПКМ) значок Windows и нажать на нужный пункт. В других версиях нажмите на «Пуск» и выберите «Панель управления». Если вы затрудняетесь найти этот пункт, воспользуйтесь поиском. Он для этого и существует;
  2. Если вы перешли в «Панель управления», но пункт «Удаление программ» найти не можете, обратите внимание на строку «Просмотр». Она находится вверху справа над всеми пунктами. Выберите её мышью и установите значение – «Категории»;
  3. Теперь вы точно увидите здесь раздел «Удаление программ». Выберите его;
  4. Список программ здесь нам ни к чему, поэтому обратите внимание на пункты слева выше. Здесь будет строка «Просмотр установленных обновлений»;
  5. Когда вы откроете эту ссылку, перед вами будет список обновлений. Здесь вам нужно найти установленные обновления за последние несколько дней. Определить новые можно по дате их установки. Выбирайте обновления по числу, с которого у вас начались проблемы;
  6. Чтобы удалить выбранное, нажмите на него указателем мыши и вверху выберите «Удалить»;
  7. После этих действий необходимо закрыть окна и все приложения и перезагрузить компьютер.

Когда вы снова включите компьютер, попробуйте запустить программу, которая вызывала ошибку «Модуль загружен, но точка входа DLLRegisterServer не найдена». Если она снова появляется, перейдите к следующей инструкции.

Главная»Ошибки

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

Несколько способов регистрации динамической библиотеки

Первым делом, непосредственно перед регистрацией, нужно переместить скачанный или найденный файл с расширением dll в нужную папку. Обычно это System32 или SysWOW64. Лучше всего будет посмотреть необходимое местоположение для каждого конкретного файла в глобальной сети.

У пользователей 64 разрядной системы, файл regsrv32.exe присутствует не только в папке windows, в каталоге System32, но и SysWOW64. Однако, утилита для 64 разрядных систем находится все также в первой папке System32. Во избежание путаницы и неправильно срабатывания команд, тем, кто использует 64 разрядную виндовс, лучше писать в операторах вместо regsrv32.exe, полный путь к этому файлу.

Первый способ заключается в том, чтобы запустить приложение «Выполнить», через пуск или сочетанием Win+R. И написать в ней regsvr32.exe полный_путь_к_файлу. Увидеть пример такого оператора можно на изображении.kak_zaregistrirovat_DLL1.jpg

После выполнения команды можно получить сообщение о том, что все прошло успешно, однако чаще всего возникают ошибки, наподобие изображенной на картинке.kak_zaregistrirovat_DLL2.jpg

Как с ними справиться будет написано дальше.

Второй метод добавления динамической библиотеки включает в себя использование консоли, запущенной от имени администратор. Найти ее проще всего через меню пуск. В ней нужно будет ввести точно такую же команду, как и в прошлом методе.kak_zaregistrirovat_DLL3.jpg

  Телефон упал в воду – первые действия

Оператор отображен на изображении. Здесь тоже может произойти удачная регистрация или же будет выдано сообщение о сбое.

Третий способ представляет собой, по сути, то же самое. Нужно клацнуть пкм по файлу библиотеки, выбрать строку в меню «Открыть с помощью» и в этой утилите указать полный путь до исполняемого файла, который располагается в папке windows/system32 или syswow64.

Возможные ошибки при регистрации

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

Есть несколько способов добавить требуемый файл.

  • Если вы занимаете программированием и создали свою динамическую библиотеку, то для ее регистрации есть специальные утилиты (regasm.exe).
  • В другом случае лучше всего будет выполнить поиск по имени отсутствующего файла и выяснить в какой набор программ он входит. Например, библиотеки, чье имя начинается с d3d, являются часть DirectX и будут добавлены при его установке. Также может быть и с другими данными, нужно будет найти программу, скачать и установить ее целиком, а не отдельные библиотеки из нее. В таком случае утилита выполнит регистрацию сама и все будет работать.
  • Можно поместить найденный файл dll в один каталог с исполняемым файлом той утилиты, которая ее требует для запуска. Это так же может сработать.
  • В случае запуска игр и утилит, которые были скачаны из интернета, стоит также проверить отчеты своего антивируса. Вполне возможно, что он удалил нужный файл при установке или не дает приложению к нему обратиться. Если так и пользователь доверяет программе, то можно выполнить переустановку или запуск с отключенным антивирусом.

  Определение разрешения экрана

Читайте также:

Задайте вопрос Быстрый доступ

Archived Forums > Администрирование Windows Vista
  • Общие обсуждения

  • Доброго всем времени суток! Столкнулись с проблемой, неможем зарегать Dll через стандартный regsvr32 в Win vista HomeBasiс. Мои действия:Пуск-Выполнить…- regsvr32 c:1cScaner.dll — OK. /dll лежит там. Ответ системы:Не удалось загрузить модуль «c:1cScaner.dll» Проверьте что двоичный файл хранится на указаном пути или запустите отладку… Не найден указаный модуль. Этиже самые dll раньше регистрировались и сейчас регистрируются на другом компе. Очень прошу помочь. Заранее благодарю.
    • Изменен тип18 октября 2010 г. 20:02давность и отсутствие активности в теме

    16 июня 2009 г. 9:13

Все ответы

  • 16 июня 2009 г. 9:16
  • 17 июня 2009 г. 3:26
  • Запустите от имени Администратора командную строку или, скажем, Far (Explorer не подходит) и убедитесь, что файл действительно находится по указанному пути. Попробуйте разместить файл в другой папке (также находясь в контексте полного Администратора).17 июня 2009 г. 6:34
  • Попробовал и в фаре и в командной строе (под админом). Пробовал в разных каталогах, тоже советовали в каталоге документов Администратора никакого толка. Пробовал перекинуть сам ехе»шник regsvr32.exe из ХР тоже ругается — «Ошибка при вызове LoadLibrary(«c:1cScaner.dll) — не найден указаный модуль»17 июня 2009 г. 6:50
  • Вам (ну, не вам лично, а компьютеру) не хватает какой-то другой библиотеки. На самом деле, вопрос больше к разработчикам. Вот цитата с одного из форумов разработчиков с обсуждением аналогичной ошибки:Не хватает на другом компьютере нужной DLL.  Для этого можно посмотреть с помощью Dependency Viewer, на какие DLL твой модуль ссылается и недостающие скопировать в системный каталог Windows на другом компьютере. Обычно это какая-нибудь MSVCRTxx.DLL

    17 июня 2009 г. 7:07

  • 22 июня 2009 г. 18:04
  • Уважаемый пользователь!

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

    24 сентября 2010 г. 15:04

Используемые источники:

  • https://rusadmin.biz/oshibki/modul-zagruzhen-no-tochka-vhoda-dllregisterserver-ne-najdena/
  • http://composs.ru/kak-zaregistrirovat-dll/
  • https://social.technet.microsoft.com/forums/ru-ru/cfe6e4c9-bed4-411b-b2b3-3f26de560a3d/10531077-10841086107810771084

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации