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

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

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

перерегистрация файлов dll

Что за RegSvr32?

RegSvr32 – консольная утилита Windows, позволяющая проводить регистрацию (равно как и аннулировать её) у объектов связывания/внедрения. “Под замес”, таким образом, попадают некоторые DLL и ActiveX-управляющие элементы – программируемые компоненты-приложения с интерфейсом на базе OLE, позволяющие включать их в другие программы или приложения. С незапамятных времён они называются ActiveX элементы или “контрольки ActiveX”. Регистрация используется для добавления информации в центральную директорию Windows (то бишь реестр). Информация чаще всего включает в себя “дружественное” название этого компонента, что делает его “более привлекательным” для других приложений, которые могут или будут точно его использовать. Там также есть его полное название и путь к самому файлу, который содержит в себе исполняющий код. Из него Windows и узнаёт о специальных и доступных функциях компонента, а также о том, как эти функции запускать (обращаться за исполнением кода). Нередко регистрация крутится вокруг проблем совместимости с версиями ОС одного производителя, но разных поколений. Ведь информация в реестре Windows всегда будет содержать в себе данные именно о последней версии компонента. Windows за этим, кстати, следит очень трепетно: у компонента версия может только одна. И традиционно, если какая-то функция Windows обнаруживала свою недееспособность, пользователю всегда была доступна процедура регистрации или отмены регистрации сервера таких элементов. На самом деле, такая “деятельность” редко присуща конечным пользователям. Это дела разрабов ПО, но здесь Microsoft явно пошла нам навстречу, оставив возможность изменить отношение системы к какой-то программе вручную. С нашей помощью и помощью RegSvr32.

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

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

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

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

Ошибка RegSvr32

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

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

содержание steam api

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

dllregisterserver

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

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

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

В вашем случае – не смею догадываться. Однако на моём опыте это был почти всегда либо кривой либо несовместимый с данной версией Windows файл. Нередко с этой проблемой будут сталкиваться пользователи именно Windows 10, для большинства из которых W10 – целостная система, время от времени изменяющая свой вид. Ан нет. С полугодичными обновлениями мы получаем зачастую именно обновлённую систему. Со всеми вытекающими – старые версии файлов аннулируются, а прежние функции отпадают либо обновляются вплоть до невозможности запускать на их базе некоторые другие, сторонние программы. Звучит крутовато, но уже простите. Вариант решения проблемы с самим файлом частично предложен в статье Что такое dll, и почему их в Windows не хватает? Однако вопрос с “ошибкой” регистрации вас волновать в описанной форме более, думаю, не должен.

Регистрация regsvr32 в Windows

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

Как устранить неполадки с регистрацией утилиты Regsvr32

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

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

Мы рассмотрим несколько возможных вариантов восстановления работоспособности Regsvr32.

Вариант 1: Запустить через “Командную строку от имени администратора”

Для работы утилиты желательны расширенные права пользователя операционной системы. В противном случае запуск может не состояться или состояться некорректно. Хотя запускать рассматриваемую утилиту можно и без прав администратора. Для примера рассмотрим, как запустить “Командную строку” от имени администратора:

  1. В Windows 10 это очень легко сделать через поисковую строку по системе. Воспользуйтесь сочетанием клавиш Ctrl+W или нажмите по иконке лупы в панели задач.
  2. Введите наименование искомого компонента. Можно просто ввести сочетание cmd. Результат выдачи будет тем же.
  3. Обратите внимание на пункт “Запуск от имени администратора”. Нажмите по нему и подтвердите всплывшее окошко запроса дополнительных прав.

Вариант 2: Перенести файл SysWoW64

При попытке зарегистрировать DLL-библиотеку не подходящей разрядности под вашу операционную систему вы столкнетесь с ошибкой. Пользователи 64-битной Windows могут исправить возникшую ошибку при попытке регистрации 32-битного файла, выполнив некоторые манипуляции с файлами:

  1. Откройте “Проводник”. Там, в адресной строке, введите путь C:\Windows\System32 и нажмите Enter для перехода в указанную директорию.
  2. Найдите DLL-файл, с которым у вас возникают проблемы из-за неподходящей разрядности. Кликните по нему правой кнопкой мыши. В открывшемся контекстном меню выберите опцию “Вырезать”.
  3. Вернитесь назад к папке Windows. Там найдите и перейдите в папку SysWOW64.
  4. Вставьте ранее скопированный файл в директорию. Для этого можно просто воспользоваться сочетанием клавиш Ctrl+V или кликнуть правой кнопкой мыши по любому пустому месту и выбрав из контекстного меню пункт “Вставить”.
  5. Теперь вам потребуется инициировать файл через “Командную строку”. Запустите ее от имени администратора. Подробно про то, как выполнить такой запуск было написано в инструкции выше.
  6. Введите в открывшуюся “Командную строку” команду %systemroot%\SysWoW64\regsvr32 name. dll. Вместо name. dll нужно указать полное наименование DLL-файла, который требуется зарегистрировать в системе. Нажмите Enter для применения команды.

Вариант 3: Заражение вирусами

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

Подробно про сканирование операционной системы на наличие вирусов мы писали в отдельной статье. Там рассматривался вариант сканирования через встроенный Защитник Windows. Его новые версии практически ничем не уступают стандартным антивирусным решениям.

Вариант 4: Проверить целостность системных файлов

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

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

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

Вариант 5: Восстановление Windows

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

Подробно про все варианты восстановления системных файлов в Windows мы писали отдельную статью.

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

Источники:

https://computer76.ru/2020/06/03/regsvr32/

https://public-pc. com/registracziya-regsvr32-v-windows/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: