Regsrv32 как зарегистрировать dll windows 10

REGSVR32 – регистрация или отмена регистрации библиотеки DLL в реестре Windows

Regsrv32 как зарегистрировать dll windows 10

Модель многокомпонентных объектов (Component Object Model — СОМ) является основным средством взаимодействия программ любых типов: библиотек, приложений, системного программного обеспечения и т.п.

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

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

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

Регистрация необходима, поскольку программы работают не с самими файлами DLL, OCX, ACX, EXE, а с объектами, представляющими определенный набор программных интерфейсов. Для регистрации DLL используется следующие разделы реестра:

HKLM\SOFTWARE\Classes\CLSID – при регистрации COM-объектов библиотек для всех пользователей системы;

HKCU\SOFTWARE\Classes\CLSID – при регистрации COM-объектов библиотек только лишь для текущего пользователя;

HKLM\SOFTWARE\Wow6432Node\Classes\CLSID – для регистрации 32-битных DLL в 64-битных ОС Windows;

При регистрации, в указанном разделе реестра создается ключ с именем, эквивалентным глобальному уникальному идентификатору GUID регистрируемого оюъекта.

GUID применительно к СОМ, является идентификатором класса. Чтобы отличать идентификаторы классов от других идентификаторов, для них используют подраздел реестра с именем CLSID.

GUID представляет собой 128-разядное 16-ричное значение, заключенное в фигурные скобки:

{23170F69-40C1-278A- 1000-000100020000

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

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

Вместо переустановки вполне можно обойтись перерегистрацией поврежденного объекта с помощью утилиты regsvr32.exe, имеющейся во всех версиях операционных систем семейства Windows .

Утилита regsvr32.exe является стандартной программой командной строки для регистрации и отмены регистрации элементов управления OLE, ActiveX и библиотек DLL в реестре Windows. В 64-разрядных версиях Windows присутствуют две версии файла regsv32.exe:

– 64-разрядная версия в каталоге %systemroot%\System32 (обычно – C:\Windows\System32)

– 32-разрядная версия в каталоге %systemroot%\SysWoW64 (обычно – C:\Windows\SysWoW64)

Для работы утилиты требуются повышенные привилегии, поэтому окно командной строки должно вызываться с правами администратора ( ”Запуск от имени администратора”).

При запуске regsvr32.exe без параметров командной строки, либо при запуске с неверными параметрами, отображается подсказка:

Формат командной строки REGSVR32:

Regsvr32 [/u] [/s] [/n] [/i[:строка_команд]] DLL-файл

/u — – вызывает DllUnInstall, отменяет регистрацию сервера

/i — вызывает DllInstall, передавая ей в параметре необязательную строку_команд;

/n — не вызывает DllRegisterServer; может использоваться с ключом /I;

/s – “тихий” режим; окна сообщений не отображаются;

regsvr32 /u “C:\Program Files\7-Zip\7-zip32.dll” – отменить регистрацию указанной DLL. При успешной отмене отображается сообщение:

Для подавления вывода сообщения, используется параметр /s:

regsvr32 /u /s “C:\Program Files\7-Zip\7-zip.dll”

В результате выполнения данной команды, из контекстного меню Проводника Windows, вызываемого правой кнопкой мышки, исчезнет пункт архиватора 7-Zip. Для его восстановления необходимо выполнить регистрацию 7-zip.dll командой:

regsvr32 “C:\Program Files\7-Zip\7-zip.dll”

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

%SystemRoot%\syswow64\regsvr32.exe

Или без использования переменных окружения:

C:\Windows\System32\regsvr32.exe

В качестве дополнительного программного средства для управления регистрацией объектов COM, очень удобно пользоваться бесплатной утилитой от Nirsoft RegDLLView.exe. Программа не требует установки в системе, имеет небольшой размер и позволяет:
– Получить в удобном виде список всех зарегистрированных в системе объектов. – Сохранить в текстовом файле или в HTML-формате параметры всех или выделенных из списка зарегистрированных DLL. – Выполнить регистрацию или отмену регистрации выбранных объектов. – Создать reg-файл для выполнения отмены регистрации одной или нескольких DLL. – Зарегистрировать или перерегистрировать указанный файл. Кроме того, имеется возможность проверить цифровые подписи исполняемых файлов зарегистрированных объектов, просмотреть или изменить их свойства, а также выполнить запуск редактора реестра с отображением информации выбранного GUID через пункт контекстного меню ”Open in Regedit”, вызываемого правой кнопкой мышки.

Страница с описанием RegDllView и ссылками для скачивания 32-х и 64-х разрядных версий программы.

Весь список команд CMD Windows

Источник: https://ab57.ru/cmdlist/regsvr32.html

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

Regsrv32 как зарегистрировать dll windows 10

Всякий раз, теряя после проверки антивирусом или очередного обновления некий файл.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/

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

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

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