Как зарегистрировать DLL в Windows
Среди частых вопросов пользователей, особенно после того, как они сталкиваются с тем, что какая-то из библиотек DLL отсутствует в Windows 10, Windows 11 или других версиях системы — как зарегистрировать DLL в соответствующей версии ОС.
В этой инструкции подробно о способах регистрации библиотек DLL в Windows x64 и x86 (32-бит) с помощью regsvr32.exe (и кратко о regasm.exe), о возможных нюансах и проблемах, которые могут возникнуть в процессе.
Регистрация библиотеки DLL в Windows 10, Windows 11 и предыдущих версий системы
Дальнейшие шаги описаны в предположении, что DLL, которую нужно зарегистрировать, уже находится в нужном расположении: папке C:\Windows\System32, C:\Windows\SysWOW64 или, в некоторых случаях — отдельных папках программ, к которой относится соответствующая библиотека, например, для 1С — C:\Program Files\1cv8\номер_версии\bin (или Program Files x86 в случае 32-битной версии).
Прежде чем приступить к регистрации библиотеки, учитывайте следующие моменты:
- В x64 версиях Windows 64-битные DLL хранятся в System32, а 32-битные — в SysWOW64 (у некоторых начинающих пользователей бывает обратное предположение исходя из имён папок).
- Файлы DLL x64 и x86 (32-бит) — это разные файлы. И если прямого указания на разрядность в месте загрузки файла нет, то чаще это 32-битный файл (что не мешает ему работать в x64 системе), но это не всегда так.
- Для регистрации библиотеки DLL используется системный инструмент regsvr32.exe, который также доступен в двух версиях, которые лежат в папках System32 и SysWOW64 (в случае 64-битных систем). По умолчанию при описываемых далее действиях запускается x64 версия.
- 32-битным программам и играм (по умолчанию устанавливаются в Program Files x86 в 32-битных системах) для работы нужны 32-битные DLL, не зависимо от разрядности Windows.
Сам процесс регистрации в общем случае состоит из следующих шагов:
- Нажмите клавиши Win+R на клавиатуре (Win — клавиша с эмблемой Windows). Также можно нажать правой кнопкой мыши по кнопке «Пуск» в Windows 11 или Windows 10 и выбрать пункт контекстного меню «Выполнить».
- Введите команду regsvr32.exe путь_к_файлу (если путь к файлу содержит пробелы, возьмите весь путь в кавычки), например, для регистрации библиотеки DLL COMCNTR.DLL в 1С (для 64-бит) команда может иметь вид:
regsvr32.exe "C:\Program Files\1cv8\8.3.19.1150\bin\comcntr.dll"
Если DLL находится в System32, полный путь указывать не обязательно, достаточно простого имени файла, как на изображении ниже. - Нажмите Ок или Enter.
- При успехе вы получите сообщение вида «Успешное выполнение DllRegisterServer в имя_файла.dll» или «Успешное выполнение DllRegisterServer и DllInstall в имя_файла.dll».
Возможна и неудача — сообщение об ошибке «Модуль dll загружен, но точка входа DllRegisterServer не найдена. Проверьте, что файл является правильным файлом DLL или OCX и повторите попытку». Подробнее об ошибке — в следующем разделе статьи.
Дополнительно: для регистрации классов из библиотек DLL .NET Framework в COM с созданием необходимых записей в реестре используется regasm.exe из .NET SDK, причем базовая команда регистрации DLL выглядит тем же образом, что и в случае с regsvr32.exe. Подробнее по использованию regasm — https://docs.microsoft.com/ru-ru/dotnet/framework/tools/regasm-exe-assembly-registration-tool.
Почему не удается зарегистрировать DLL
Ошибка при регистрации с помощью regsvr32 вида «Точка входа DllRegisterServer не найдена» говорит о том, что эта библиотека DLL не поддерживает регистрацию описанным методом. Можно попробовать использовать вариант команды:
regsvr32 /i /n путь_к_файлу.dllно с большой вероятностью и это не поможет.
У большинства домашних пользователей такая проблема возникает при регистрации файлов DLL для игр и программ, часто не вполне лицензионных, которые сообщили, что нужный файл DLL не обнаружен или отсутствует. Причем сами библиотеки DLL обычно скачаны со сторонних сайтов (и чаще всего имеют имена начинающиеся с «vc», «msvc» или «d3d»). А решение, как правило, простое — выяснить, частью какого набора компонентов является эта DLL и установить эти компоненты с помощью их собственного установщика. Более подробно проблема и подходы к решению описаны в инструкции Точка входа DllRegisterServer не найдена — причины и возможные решения.
Видео
Надеюсь, цель достигнута, а количество вопросов, связанных с регистрацией DLL в Windows, уменьшилось.
Даниил
Здравствуйте. Скачал из Стима игру, и столкнулся с ошибкой, связана она с файлом msvcrt. dll. Попробовал все указанные вами способами, а после попробовал установить Microsoft C++, но это все равно не помогло. Что мне делать?
Ответить
Dmitry
А установили и X86 и X64 версии (нужны обе). Нужного года?
Ответить
Карина
Здравствуйте, подскажите пожалуйста. Переименовываю папку пользователя, для этого изменению значения в файлах реестра и всё идёт хорошо, НО. На файле installer dlls нельзя изменить значение, пишет : «ошибка при записи нового значения параметра».
Что делать в данном случае?
Ответить
Dmitry
Здравствуйте.
Карина, вообще, я хоть и могу рассказать, как стать владельцем раздела реестра, не рекомендовал бы заниматься ручным переименованием папки пользователя (может плохо закончиться). Просто создайте нового пользователя с нужным именем (локального, а не с учетной записью Майкрософт) и у него будет папка соответствующая, потом переедете под него.
Что касается переименовывания, делается вот так https://remontka.pro/take-registry-hive-ownership-windows/
Ответить
Вадим
Статья толковая. Но мне не помогло. Была проблема с файлом расширения .ocx операционка Windows 7 максимальная. И никак не регистрировался ну соответственно приложение не работало ошибка 339: «Run-time error 339». При регистрации: файл не найден проверьте его наличие или связанных DLL. Как полечил? Нашёл файл в папке с помощью Total Commander C:\Windows\SysWOW64\Codejock.SyntaxEdit.v13.2.1.ocx
Правой кнопкой мыши «Просмотр (Lister)»
После того как открылся просмотр перешёл на вкладку Dll Dependency.
Отсутствующая Dll отмечена красным восклицательным знаком.
Скачал с интернета.
Подкинул в C:\Windows\SysWOW64.
Регистрировал первым способом.
И всё заработало.
Ответить
Cthulhu
собственно иногда требуется регистрировать 32-разрядные библиотеки для 64-разрядных программ — тогда еще нужно зарегистрированную длл-ку в COM+ «обертку» заворачивать.
Ответить
Дедушка Валера
зачастую бывает, что нужно запустить командную строку от администратора
Ответить
Игорь
Только не
А правильно
т.е. с кавычками.. тогда работает
Ответить
Dmitry
Вы правы, мой недосмотр, не обратил внимание на пробел в пути (если бы не было — то и без кавычке работало бы), поправил в статье и пояснения дал. Спасибо.
Ответить
Денис
картинки отклеились
Ответить
Dmitry
Не совсем понял, вроде всё на месте и отображается.
Ответить
Никита
Для Windows 7 x64, по инструкции выше вылазила ошибка «regsrv32.exe не является приложением Win32»
Помогло изменение команды на C:\Windows\SysWOW64\regsvr32.exe C:\…
Ответить