Не удалось загрузить модуль regsvr32

Использование средства Regsvr32 при регистрации библиотек и устранение неполадок, связанных с выводимыми им сообщениями об ошибках | UCS Документация

Не удалось загрузить модуль regsvr32

Regsvr32 — это служебная программа командной строки для регистрации и отмены регистрации элементов управления OLE, например ActiveX и библиотеки DLL в реестре Windows. Средство Regsvr32.exe устанавливается в папке %systemroot%\System32 в ОС Windows XP и более поздних версиях Windows. 

В 64-разрядных версиях Windows имеются две версии файла Regsv32.exe:

  • 64-разрядная версия — %systemroot%\System32\regsvr32.exe;
  • 32-разрядная версия — %systemroot%\SysWoW64\regsvr32.exe.

Файл RegSvr32.exe имеет следующие параметры командной строки:

Regsvr32 [/u] [/n] [/i[:cmdline]]

  • /u — отменяет регистрацию DLL
  • /i — вызывает DllInstall, передавая ей в параметре необязательную строку_команд; при использовании с ключом /u вызывает DllUnInstall.
  • /n — не вызывает DllRegisterServer; это может использоваться с ключом /i
  • /s – “тихий” режим; окна сообщений не отображаются

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

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

  1. Проведите пальцем от правого края экрана, а затем коснитесь чудо-кнопки “Поиск”. Если вы используете мышь, переместите указатель в правый нижний угол экрана и нажмите чудо-кнопку “Поиск”. Введите в поле “Поиск” запрос “Командная строка”, щелкните правой кнопкой мыши элемент “Командная строка”, а затем выберите команду “Запуск от имени администратора”. Получив запрос на ввод пароля администратора или подтверждение, введите пароль или нажмите кнопку “Разрешить”.
  2. Нажмите кнопку “Пуск”, в поле “Поиск” введите запрос “Командная строка” или “cmd”, щелкните правой кнопкой мыши элемент “Командная строка”, а затем выберите команду “Запуск от имени администратора”. Получив запрос на ввод пароля администратора или подтверждение, введите пароль или нажмите кнопку “Разрешить”.
  3. Войдите в систему в качестве администратора или с другой учетной записью с правами администратора и откройте окно “Командная строка”.

Если при регистрации 32-разрядной библиотеки DLL в 64-разрядной версии ОС Windows появляется ошибка, выполните следующие действия.

  1. Откройте командную строку с повышенными привилегиями.
  2. Если 32-разрядная библиотека DLL находится в папке %systemroot%\System32, переместите ее в папку %systemroot%\SysWoW64.
  3. Выполните следующую команду:

%systemroot%\SysWoW64\regsvr32

В приведенной ниже таблице содержатся сообщения об ошибках RegSvr32 и возможные причины их возникновения:

№ п.п.Сообщение об ошибкеПричина
1Недопустимый параметр командной строки “”%1″”. Проверьте использование команды и повторите попытку.Введено недопустимое сочетание параметров командной строки для вызова средства regsvr32.exe.
2Эта команда допустима только в том случае, если открыт проект элемента OLE Activex в Microsoft Visual Studio.Средство Regsvr32.exe вызвано программой Visual Studio, но в командной строке не указано ни одного модуля.
3Чтобы зарегистрировать модуль, нужно задать имя двоичного файла.Средство Regsvr32.exe вызвано без указания модулей в командной строке.
4Не удалось выполнить команду OleInitialize. Недостаточно свободной оперативной памяти на этом компьютере. Закройте все открытые программы и повторите попытку.Средство Regsvr32 должно инициализировать библиотеку COM, прежде чем вызывать ее функции, и отменить инициализацию при завершении работы. Эти сообщения об ошибке возникают, если попытка инициализации библиотеки COM или ее отмены не были успешными.
5Не удалось загрузить модуль “%1”.\ Проверьте, что двоичный файл хранится на указанном пути или запустите отладку, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми DLL-файлами.\%2.При загрузке указанного в командной строке модуля произошла ошибка. Текст ошибки выводится как часть сообщения.
6Модуль “%1″ загружен, но точка входа %2 не найдена.\Проверьте, что ” %1″ является правильным файлом DLL или OCX и повторите попытку.Средству Regsvr32.exe не удалось найти необходимую точку входа модуля, указанного в командной строке. Это может произойти при неправильном экспорте точек входа из модуля или если модуль не является DLL- либо OCX-файлом.
7Модуль ” %1″ загружен, но не удалось выполнить вызов %2, код ошибки: %3.\Для получения дополнительных сведений об этой ошибке выполните поиск в Интернете, указав код ошибки как аргумент поиска.При вызове средством regsvr32.exe точки входа модуля, указанного в командной строке, произошла ошибка. Код ошибки выводится как часть сообщения.
8Возможно, модуль “”%1″” не совместим с версией Windows, работающей на этом компьютере. Проверьте, совместим ли этот модуль с x86 (32-разрядной) или x64 (64-разрядной) версией regsvr32.exe.Эта ошибка может произойти, если средство regsvr32.exe запущено на 32-разрядном (x86) компьютере, а в командной строке указан 64-разрядный модуль.

В приведенной ниже таблице содержатся сообщения об ошибках RegSvr32 и возможные причины их возникновения:

№ п.п.Сообщение об ошибкеПричина
1Нераспознанный флаг: /неверный_флагВведено недопустимое сочетание флагов и ключей.
2Не указано имя DLL.Не введено имя DLL-файла.
3Имя_DLL было загружено, но найти точку входа для DllRegisterServer или DllUnregisterServer не удалось.Файл с указанным именем DLL не является DLL- или OCX-файлом. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 wjview.exe.
4Имя_DLL не является исполняемым файлом, и ни одного модуля поддержки для этого типа файлов не зарегистрировано.Файл с указанным именем DLL не является исполняемым файлом EXE, DLL или OCX. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 autoexec.bat.
5Имя_DLL не поддерживает автоматическую регистрацию, либо в памяти находится поврежденная версия.Например, при вводе команды regsvr32 icwdial.dll будет возвращено это сообщение об ошибке, так как файл Icwdial.dll не регистрируется автоматически. При подозрении на наличие в памяти поврежденной версии файла с указанным именем DLL перезагрузите компьютер или повторно извлеките исходную версию файла.
6Ошибка функции OleInitialize (или OleUninitialize)Средство Regsvr32 должно инициализировать библиотеку COM, прежде чем вызывать ее функции, и отменить инициализацию при завершении работы. Эти сообщения об ошибке возникают, если попытка инициализации библиотеки COM или ее отмены не были успешными. Например, файл Ole32.dll поврежден или является неправильной версией.
7Сбой при загрузке библиотеки (“Имя_DLL”). GetlastError возвращает ошибку 0x00000485Winerror.h, 0x00000485 = 1157 (ERROR_DLL_NOT_FOUND). Это означает, что “Не найден один из файлов библиотек, необходимых для выполнения данного приложения”. Например, при вводе команды regsvr32 missing.dll будет возвращено это сообщение об ошибке, если файл Missing.dll не найден.
8Сбой при загрузке библиотеки (“Имя_DLL”). GetLastError возвращает ошибку 0x00000002Winerror.h, 0x00000002 = 2 (ERROR_FILE_NOT_FOUND). Это означает “Не удается найти указанный файл”. Т. е. не найден соответствующий DLL-файл. Например, при вводе команды regsvr32 icwdial.dll будет возвращено это сообщение об ошибке, если файл Tapi32.dll не найден.
9Сбой при загрузке библиотеки (dskmaint.dll). GetLastError возвращает ошибку 0x000001fWinerror.h, 0x000001f = 31 (ERROR_GEN_FAILURE). Это означает “Присоединенное к системе устройство не работает”. Это происходит при попытке регистрации файла Win16.dll. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 dskmaint.dll.
10Сбой при загрузке DllRegisterServer (или DllUnregisterServer) вИмя_DLL. Возвращенный код:строкаВ файле Winerror.h найдите строку, указанную в сообщении.

Источник: https://support.ucs.ru/ru/node/8561

Регистрация компонентов системы из RegSvr32

Не удалось загрузить модуль regsvr32

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

Логика советчиков проста – без регистрации (или после повреждения точек входа) в реестре функции программы для Windows просто будут недоступны. Но все ли из вас понимают смысл процедуры и обязательность к её применению? В статье я хотел бы частично покрыть проблему, возникающую на данном этапе.

Что за RegSvr32?

RegSvr32 – консольная утилита Windows, позволяющая проводить регистрацию (равно как и аннулировать её) у объектов связывания/внедрения.

“Под замес”, таким образом, попадают некоторые DLL и ActiveX-управляющие элементы – программируемые компоненты-приложения с интерфейсом на базе OLE, позволяющие включать их в другие программы или приложения. С незапамятных времён они называются ActiveX элементы или “контрольки ActiveX”.

Регистрация используется для добавления информации в центральную директорию Windows (то бишь реестр). Информация чаще всего включает в себя “дружественное” название этого компонента, что делает его “более привлекательным” для других приложений, которые могут или будут точно его использовать.

Там также есть его полное название и путь к самому файлу, который содержит в себе исполняющий код. Из него Windows и узнаёт о специальных и доступных функциях компонента, а также о том, как эти функции запускать (обращаться за исполнением кода).

Нередко регистрация крутится вокруг проблем совместимости с версиями ОС одного производителя, но разных поколений. Ведь информация в реестре Windows всегда будет содержать в себе данные именно о последней версии компонента. Windows за этим, кстати, следит очень трепетно: у компонента версия может только одна.

И традиционно, если какая-то функция Windows обнаруживала свою недееспособность, пользователю всегда была доступна процедура регистрации или отмены регистрации сервера таких элементов. На самом деле, такая “деятельность” редко присуща конечным пользователям. Это дела разрабов ПО, но здесь Microsoft явно пошла нам навстречу, оставив возможность изменить отношение системы к какой-то программе вручную. С нашей помощью и помощью RegSvr32.

Порядок пере/регистрации элемента

Вы всегда можете попытаться провести ручную регистрацию DLL или OCX файлов из командной строки от имени администратора:

regsvr32 путь-к-файлу/имя-файла

Обратная операция выполняется с добавлением флага u:

regsvr32 /u путь-к-файлу/имя-файла

Суть обеих операций – обращение к серверам DllRegisterServer / DllUnregisterServer внутри этих DLL с целью зарегистрировать файл или удалить сведения о нём из реестра. Т.е. создавая в реестре новые пути или, наоборот, удаляя их из него.

У вас 32-х или 64-х разрядная версия?

Здесь путаница в использовании собственных средств системы будет жить, думаю, вечно. Наиболее частая в нашем случае связана именно с попыткой регистрации 32-х битного приложения в 64-битной Windows. Но здесь всё просто. Если вам нужно зарегистрировать библиотечку 32-х в 64-х битной Windows, команда регистрации через regsvr32 примет вид:

%systemroot%\SysWoW64\regsvr32 путь-к-файлу/имя-файла

Мы, таким образом, заставляем консоль “заработать утилиту” из папки, которая, несмотря на своё название (SysWoW64), как раз и работает с 32-х битными версиями программ. Но стоит ли подключать к решению проблемы с Windows регистратор RegSvr32?

И правда, надо ли?

Сам факт того, что файл имеет расширение .dll не означает обязательную его регистрацию. Более того, вполне вероятно, что этот процесс для него не присущ. Если внутри его нет функции DllRegisterServer, утилита regsvr32 вообще не поймёт что с ним делать. В общем, с такой ситуацией вы сталкиваетесь именно в тот момент, когда видите сообщение типа:

Модуль ” * ” загружен, но точка точка входа не найдена…

Были времена когда вместо традиционного для такой “ошибки” окна появлялось игривое сообщение типа “Зачем вы пытаетесь зарегистрировать этот DLL ? Это обычный файл DLL Windows, который не требует регистрации”. Или его американский вариант “Why are you trying to register this DLL? It’s an ordinary Windows DLL, there’s nothing to be registered”.

И серьёзным подспорьем пользователю в этом вопросе могла бы послужить программа DLL Export Viewer от NirSoft, с помощью которой можно было бы проверить наличие серверов DllRegisterServer и DllUnRegisterServer в собственной библиотеке. Возьмём пример DLL-файла из рисунка, заявляющего о невозможности зарегистрировать пресловутый steam_api.

dll:

а где же сервера?

Как видите сами, у файла и возможности-то такой нет. В отличие, например, от этого:

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

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

И, перед тем, как вы приступите к более детальному изучению своего вопроса, присмотритесь к другим “советам”, которые вам, скорее всего, не помогут. И вот почему:

  • “регистрируем через regsvr32” – это невозможно, и мы уже поняли почему;
  • “попробуйте запустить приложение из другой учётной записи”, создав ту заново – а что, функция в DLL-файле волшебным образом появится заново? Если ошибка не связана с правами доступа, это не поможет. Windows ведь одна на всех.
  • “попробуйте чистую загрузку Windows” – да регистрации не мешают другие программы и драйвера;
  • “чиним систему через sfc /scannow” – от этого инструмента, как он ни хорош, ждать много в нашем случае не приходится. К сожалению, вручную прописать функции сервера он не сможет, доступа к сторонним файлам у него нет.

Так в чём проблема?

В вашем случае – не смею догадываться. Однако на моём опыте это был почти всегда либо кривой либо несовместимый с данной версией Windows файл.

Нередко с этой проблемой будут сталкиваться пользователи именно Windows 10, для большинства из которых W10 – целостная система, время от времени изменяющая свой вид. Ан нет. С полугодичными обновлениями мы получаем зачастую именно обновлённую систему.

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

Вариант решения проблемы с самим файлом частично предложен в статье Что такое dll, и почему их в Windows не хватает? Однако вопрос с “ошибкой” регистрации вас волновать в описанной форме более, думаю, не должен.

Успехов.

Источник: https://computer76.ru/2020/06/03/regsvr32/

Как убрать ошибку 1С «-2147221005(0x800401F3): Недопустимая строка с указанием класса»

Не удалось загрузить модуль regsvr32

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

Причина связана с незарегистрированными в системе компонентами — comcntr.dll, ошибками доступа (недостаточно прав).

Источник: https://zen.yandex.ru/media/id/5db934515ba2b500ad20a006/kak-ubrat-oshibku-1s-21472210050x800401f3-nedopustimaia-stroka-s-ukazaniem-klassa-5e56042f5c1f4e2533321a22

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.