Крайне неприятная ошибка в Windows «Модуль загружен, но точка входа DLLRegisterServer не найдена» связана, как правило, с некорректным функционированием динамически подключаемой библиотеки (сокр., «.dll»), к которой обращается программа в процессе своей работы. В результате встроенный в Windows процесс отвечающий за регистрацию библиотеки в ОС, отказывается ее принять либо не может найти. А программа, обращающаяся к неработающим модулям, соответственно, не функционирует. Потому, предлагаю разложить по полочкам данную проблему для того, чтобы понять, каким образом ее можно исправить.
В чём суть ошибки «Модуль загружен, но точка входа DLLRegisterServer входа не найдена»?
Итак, объяснение смысла данной ошибки закономерно будет начать с определения «библиотеки «. Библиотека или в некоторых языках программирования, модуль (модули) — это набор подпрограмм, используемых в разработке программного обеспечения. Проще говоря, это совокупность небольших и независимых блоков, каждый из которых является функционально законченным фрагментом кода.
Для чего они предназначены? Существует огромное количество подпрограмм или процедур, выполняющих самые разные задачи. Некоторые из них содержат стандартные для многих программ вычислительные операции. К примеру, открытие диалоговых окон в Windows или нахождение квадратного корня из любого числа — это стандартные, часто встречающиеся процедуры. Так вот, чтобы не писать код таких подпрограмм каждый раз при создании ПО, были придуманы заранее заготовленные файлы, которые получили название «библиотеки». С помощью специальной функции их можно подключить к программе, при этом исполнимый код этой библиотеки не будет внедряться в код приложения, что позволяет сэкономить память ПК.
Библиотека dll
Динамические библиотеки DLL, встраиваемые в Windows, принадлежат к модулям общего пользования (shared library). Отличительные их особенности для пользователя состоят в следующем:
- Функции, прописанные в таких библиотеках, могут использоваться несколькими программами одновременно;
- Загружаются они по запросу соответствующего процесса, то есть динамически, не потребляя без надобности ресурсы ПК.
К сожалению, у DLL модулей есть и недостатки. Не будем говорить о так называемом «DLL Hell», так как на данный момент, несмотря на нарушение самого идейного принципа динамических библиотек общего пользования, разработчики Microsoft разрешили эту проблему. Гораздо важнее в данной статье отметить следующие недостатки:
- При внесении в библиотеку изменений программы, использующие ее могут перестать работать. Этот недочет является излюбленным у распространителей вирусов. Ведь сама Windows функционирует на основе модулей и, повредив их код, можно повлиять на работу ОС.
- При отсутствии библиотеки или ее некорректной версии программа, использующая данный модуль, соответственно, будет либо неправильно функционировать, либо откажется работать.
- Функции, прописанные в библиотеке Dll, получают один адрес в оперативной памяти для всех процессов, вызывающих их, что упрощает эксплуатацию уязвимостей модульного метода организации ПО;
Теперь о том, что такое точка входа . Точкой входа называется адрес в оперативной памяти, по которому хранится первая команда программы. На самом деле, функций в одной библиотеке может быть несколько и каждая из них имеет свою точку входа, к которой и обращается процесс, вызывающий определенную подпрограмму.
Таким образом, скомпоновав все вышеописанное в единое целое, мы можем раскрыть суть ошибки «Модуль загружен, но точка входа DLLRegisterServer входа не найдена». Эта проблема возникает при регистрации библиотеки в системе. Процесс «Regsvr32.exe», отвечающий за инсталлирование интерфейсов объектов в ОС, не может обнаружить функцию регистрации библиотеки «DLLRegisterServer» в проблемном dll.
- Код функции, которая запрашивается программой, поврежден. Это может быть вызвано как некорректной версией регистрируемой вами библиотеки, так и вирусной атакой, испортившей код модуля, путь к библиотеке в реестре или ее идентификатор GUID.
- Функция DLLRegisterServer может изначально отсутствовать в коде регистрируемой вами библиотеки;
- Отсутствие в коде библиотеки интеграции с компонентами COM/ActiveX, управляющими реализацией dll в Windows;
- Процесс регистрации вообще состоит в том, чтобы прописать путь к подключаемому модулю (модулям) в реестре Windows, для того, чтобы ОС могла «увидеть» библиотеку и оповестить программу, запрашивающую ее, о наличии или отсутствии определенного модуля в системе. Кроме того, каждому классу или объекту, входящему в состав подпрограммы, присваивается уникальный идентификатор GUID, он также необходим для регистрации, поскольку программы работают не с самими библиотеками dll, а с функциональными компонентами, входящими в ее состав. Это говорит о том, что при неправильной регистрации библиотеки значения, прописанные в реестре, останутся неверными, в результате ОС не сможет «опознать» библиотеку, чтобы ПО имело возможность подключить ее.
Рассмотрев основные причины, по которым возникают неполадки с видимостью ОС библиотеки, можно перейти к путям их разрешения.
Исправляем проблему при которой модуль загружен, но точка входа DLLRegisterServer не найдена
Итак, для того чтобы самостоятельно справиться с проблемой “Модуль загружен, но точка входа DLLRegisterServer не найдена”, необходимо скачать библиотеку , которая была повреждена в результате действий вирусов или иных факторов. Ее название можно посмотреть в выскакивающем сообщении об ошибке.
Точка входа в библиотеку thumbcache.dll не найдена
Скачиваем библиотеки dll
Скачивая библиотеки, обязательно вначале уточните разрядность вашей версии Windows (х32/ х64). Если вы найдете и установите неподходящие файлы dll, ошибка “Модуль загружен, но точка входа DLLRegisterServer не найдена” исправлена не будет. Разместите скачанные вручную файлы в папках SysWOW64 и System32, находящихся C:\Windows.
Один очень важный нюанс – при скачивании библиотек dll никогда не пользуйтесь подозрительными ресурсами. Во-первых, данные с таких сайтов могут просто не подойти для вашей ОС (они часто представляют из себя усеченную версию нужного файла), а, во-вторых, вероятнее всего, они содержат вредоносный код, который не только не избавит вас от проблем, но еще и добавит новых. Всегда при малейшем подозрении проверяйте сайт (для этого существуют различные онлайн-сервисы), читайте отзывы и комментарии пользователей. Если скачанный файл dll не работает, возьмите его с другого ресурса.
Регистрируем библиотеки dll
В случае, когда библиотека на компьютере в полном порядке, но точка входа все равно не найдена, попробуем зарегистрировать dll в RegSvr32. Рассмотрим пути избавления от проблемы на основе вышеуказанного изображения. Регистрируем файл thumbcache.dll, находящийся C:\Windows\SysWOW64.
Первый способ – вызвать командную строку и ввести нужные данные:
- нажимаем win+x и находим в появившемся меню командную строку;
- после клика на последнюю появляется черное окно;
- после слова “Компьютер>” вводим слово regsvr32 и через пробел путь к проблемному файлу C:\Windows\SysWOW64\thumbcache.dll.
Регистрация библиотеки dll через командную строку
Нажимаем Enter и ждем окончания процесса регистрации библиотеки. Если данный метод не помогает, попробуйте повторить те же действия, но уже в командной строке от имени администратора. Возможно, вам не хватает прав для внесения изменений в систему.
Второй способ – использовать строку “Выполнить”:
- нажимаем win+r и вызываем нужную нам строку;
- в появившемся поле вводим название файла RegSvr32.exe и путь к отсутствующей библиотеке;
- нажимаем OK и ждем результата.
Регистрируем dll через строку «Выполнить»
Устанавливаем обновления для Windows
Способ, к которому можно обращаться уже после того, как вышеуказанные методы не принесли желаемого результата – обновление компонентов вашей ОС. Для этого найдите на своем компьютере Центр обновления. Просмотрите все доступные обновления и прогрузите их. Процесс долгий, но необходимый. Быть может, проблема была в изначально неправильном коде dll-файлов, и разработчики уже нашли решение на своем уровне. Не выключайте соединение с интернетом и сам ПК во время установки обновлений, иначе результата не будет. Убедитесь, что все файлы прогружены и при необходимости повторите операцию.
Часто для исправления ошибки “Модуль загружен, но точка входа DLLRegisterServer не найдена” разработчики выпускают различное дополнительное ПО: моды, патчи, пакеты установки. В этом случае найдите и скачайте последнюю версию программного обеспечения, с которым у вас возникли проблемы. И напоследок о крайне нежелательном варианте – переустановке всей Windows. Конечно, этого без надобности не хочется делать никому, но, если система не открывает библиотеку dll, а все вышеуказанные методы уже испробованы, то сносите установленную и ставьте другую сборку ОС (из проверенных источников).
Файл DLL – это функциональный модуль, который может быть использован несколькими программами при условии, что он зарегистрирован.
Обычно операционные системы регистрируют DLL в фоновом режиме, но иногда вследствие повреждения жесткого диска, ошибки при установке программного обеспечения или заражения компьютерным вирусом может потребоваться зарегистрировать файл DLL вручную.
Данная инструкция расскажет, как выполнить эту процедуру.
Способ 1
- Нажмите кнопку Пуск
- В текстовое поле "Найти программы и файлы" введите:
regsvr32 [полное_имя_файла]
Полное имя файла при наличии пробелов в пути надо писать в кавычках.Например: regsvr32 "C:\Program Files (x86)\1cv77\BIN\v7plus.dll"
- Нажмите Enter
Способ 2
Примечания
- При регистрации файлов *.dll происходит их запись в Реестр Windows. При этом в ветке создается соответствующий параметр REG_DWORD со значением 1.
- Использование команды regsvr32:
regsvr32 ] DLL-файл
/u – отменяет регистрацию DLL
/s – «тихий» режим – окна сообщений не отображаются
/i – вызывает DllInstall, передавая параметром необязательную строку_команд, при использовании с ключом /u вызывает DLLUnInstall
/n – не вызывает DllRegisterServer. Может использоваться с ключом /i.
Не регистрируется Dll, ActiveX под Windows 7 - что делать?
В привычных всем Windows до XP включительно регистрация Dll, ActiveX компонентов без проблем выполнялась командой regsvr32.
В Windows 7 в принципе то же самое, но внесены некоторые "усовершенствования", из-за чего привычный порядок действий нередко не дает ожидаемого результата. Например:
Согласитесь, очень понятное и информативное сообщение. Отличный повод для разработчика ОС - предложить пользователю приобрести выпустить Windows 8, новую, еще более усовершенствованную версию, где это сообщение, возможно, переведут на человеческий язык.
А именно: окно терминала (командной строки, cmd) следует открывать командой "Запуск от имени администратора" (доступно нажатием правой кнопки мыши).
В большинстве случаев это решает проблему.
Дополнительные действия могут потребоваться, если используется 64битная версия ОС. Дело в том, что программы в ней могут быть не только 64битными но и 32 битными. Причем большинство программ - 32битные, ибо польза от 64бит есть только на ресурсоемких приложениях.
В частности, клиентская часть 1С (т.е. та 1С, с которой работает пользователь) является 32 битным приложением. (Вот сервер 1С уже может быть как 32 битным, так и 64битным, но это касается больших организаций, если у Вас 1С Бухгалтерия и 5 пользователей, то 99% что у Вас никакого сервера 1С нет и все 32 битное).
ActiveX компоненты также могут быть 32 битными или 64 битными, причем должна использоваться та версия, разрядность которой соответствует приложению. OcvitaBarcode ActiveX является 32 битным приложением.
Так вот, программы для регистрации 32битных и 64 битных ActiveX в Windows 6 64 битной тоже разные, но при этом они обе называются regsvr32.exe. (Как говорил Козьма Прутков, "если на клетке со слоном написано "буйвол", не верь глазам своим".) Поэтому, если Вы просто набираете в командной строке
regsvr32 какая-то.ocx
то в теории должна запуститься нужная regsvr32, на практике может запуститься что угодно. Зачем так сделано? ну все за тем же, если сразу сделать по-человечески, кто будет новую версию Windows покупать.
Поэтому для гарантированного запуска 32битной regsvr32, следует в окне терминала набирать команду
c:\windows\syswow64\regsvr32.exe OcvitaBarcode.ocx
Если windows установлена не в c:\windows, то путь естественно, указываем какой есть. И помним, что окно терминала следует открывать от имени администратора.
При соблюдении вышеуказанных правил 32битные ActiveX, в т.ч. OcvitaBarcode ActiveX без проблем работают в Windows 7:
Если на компьютере отсутствует или повреждена какая-либо библиотека.dll, связанная с ней программа или служба будет работать некорректно. Windows будет выдавать ошибку, что DLL-файл поврежден или отсутствует. Для решения проблемы нужно скачать требуемую библиотеку для своей версии Windows, скопировать её в нужную папку и зарегистрировать в системе.
Вне зависимости от того, какой программой и для чего используется dll-файл, установка и регистрация библиотеки всегда будет происходить по одному алгоритму. Все версии ОС Windows руководствуются одними правилами при подключении и регистрации динамических библиотек.
Пошаговая инструкция:
Как и куда копировать DLL файл
Ошибки с динамическими библиотеками DLL возникают по разным причинам: файл поврежден, несовместим с Windows или конкретной программой, заражен вирусами или удален. Решение всегда одно: загрузить корректную и полную версию библиотеки, после чего зарегистрировать файл в системе через командную строку. Обычно, весь процесс занимает не более 2-5 минут.
Сюда можно поместить (разархивировать и копировать) любые библиотеки dll, и установленные файлы будут работать:
- Для Windows 95/98/Me - файл копируется в папку C:\Windows\System
- Для Windows NT/2000 - файл копируется в папку C:\WINNT\System32
- Для Windows XP, Vista, 7, 8 - копировать в папку C:\Windows\System32
- Для 64-разрядных Windows - копировать dll файл в папку C:\Windows\SysWOW64
Где можно загрузить нужную библиотеку:
- Если это игра или программа: с другой сборкой игры, с другого ПК, на котором приложение работает, с диска (переустановить программу).
- Если это системная библиотека, проверьте актуальность драйверов, DirectX или иного компонента, если система пишет, в каком файле или программе допущена ошибка. Копировать dll можно с другого компьютера с аналогичной версией разрядностью и версией Windows (7, 8, 10). Ошибка может вызываться не самой библиотекой, но и программой, её использующей.
- Всегда можно загрузить нужную версию файла с архивов dll вроде dll.ru или ru.dll-files.com . Внимательно проверяйте, для какой версии ОС предназначена библиотека. Также следует внимательно смотреть, что скачивается: вместо нужной библиотеки многие сайты пытаются подсунуть свой платный софт для исправления ошибок с DLL.
- Попробуйте найти статью с решением проблем про нужный файл в разделе , либо воспользуйтесь поиском по сайту.
Возможно, игра или софт несовместим с версией Windows, решением может служить запуск в режиме совместимости. Если файлы блокируются антивирусом, следует внимательнее присмотреться к безопасности приложения или добавить файлы в исключения антивируса.
Все изменения вступят в силу после регистрации библиотеки в системе и перезагрузки компьютера. До этого пытаться запустить что-либо бесполезно — система не подключится к файлу.
Для проверки разрядности системы нужно нажать правой кнопкой мыши на иконке «Мой компьютер» и выбрать пункт «Свойства» . В открывшейся папке в разделе Система будет написано: «Тип системы: 64-разрядная операционная система, процессор x64».
Регистрация библиотеки в Windows
Проще всего зарегистрировать библиотеку DLL в Windows через командную строку или окно «Выполнить». Для открытия командной строки нужно: нажать Пуск -> Выполнить или комбинацию клавиш Win+R , ввести cmd.exe и нажать Enter . Можно ввести команду прямо в это поле, не открывая командной строки.
Для регистрации библиотеки нужно написать команду regsvr32 имяфайла.dll и нажать Enter . К примеру, regsvr32.exe msvcp110.dll.
Для того, чтобы изменения вступили в силу и библиотека начала работать, необходимо перезагрузить компьютер . Если Windows не хочет находить требуемый файл, можно указать полный путь: regsvr32.exe полный_путь_к_файлу.dll , например regsvr32.exe C:/Windows/System32/msvcp110.dll.