Каждый пользователь Windows хотя бы раз в своей жизни сталкивается с какой-то ошибкой DLL-файла. И очень часто, блуждая по сети в поисках хоть какой-то информации, мы наталкиваемся на совет о регистрации проблемного файла в ручном режиме через RegSvr32. Последнюю можно задействовать как через диалоговое окошко «Выполнить», так и через Командную строку.
Пользователь пытается пустить в дело модуль регистрации и… перед ним выскакивает следующая ошибка:
Возможно, модуль «*****.dll» не совместим с версией Windows, работающей на этом компьютере. Проверьте, совместим ли этот модуль с 32-разрядной (x86) или 64-разрядной (x64) версией regSvr32.exe.
Понятное дело, после появления столь невнятного сообщения пользователь находится в полном замешательстве. Казалось бы, мы пытались избавиться от одной ошибки, а взамен получили другую, еще более запутанную. Что же, в сегодняшней статье мы попытаемся немного прояснить дело и решить проблему с компонентом RegSvr32.
Почему модуль не совместим с версией Windows?
Дело в том, что пользователь, т.е. ты, дорогой читатель, пытается зарегистрировать в своей Windows динамическую библиотеку (DLL), но делает это неправильно. Вот какие ошибки совершают начинающие пользователи при регистрации DLL в ОС:
- Многие DLL поставляются разработчиками в двух вариантах: 32 и 64-битные. В некоторых случаях нужно регистрировать какую-то одну версию библиотеки, но порой приходится регистрировать как 32-битную, так и 64-битную версию DLL. Еще нужно запомнить кое-что: 64-битная ОС может работать как с 32х, так и 64-битными DLL, 32-битная ОС — только с 32-битными DLL.
- В 64-битной версии Windows присутствует не одна, а сразу две версии RegSvr32: 32х и 64-битная. Как несложно догадаться, одна используется для регистрации 32-битных DLL, другая — для 64-битных библиотек. Более того, если не указать в выполняемой команде точного расположения 32-битной версии утилиты, по умолчанию будет использована 64-битная версия.
- Важно помнить, что на 64-битных Windows папка System32 предназначена для 64-битных (!) DLL, а SysWOW64 — для 32-битных. Контринтуитивно, но Майкрософт решили сделать все именно так, что вызывает головную боль у новичков оконной ОС.
- У ARM-процессоров есть свои библиотеки под маркировкой arm-64. Такие версии DLL нельзя задействовать на системах с ЦП компаний Intel и AMD. Убедитесь, что вы скачали для своего ПК корректную версию библиотеки.
Как исправить RegSvr32 «Модуль не совместим с версией Windows»?
Проще всего разобрать парочку примеров с регистрацией файлов DLL в обеих версиях ОС Windows. Пожалуйста, убедитесь, что у вас на руках находится именно та версия DLL, которая подходит для приложения и, что более важно, для вашей ОС. Итак, давайте начнем с 32-битной Windows:
- скопируйте 32-битную версию нужного DLL-файла в папку System32;
- нажмите WIN+R для вызова диалогового окошка «Выполнить»;
- пропишите в пустой строке команду regsvr32.exe *****.dll и нажмите ENTER.
На 64-битной ОС процесс выглядит несколько иначе, а все потому, что она может работать как с 32х, так и 64-битными DLL:
- скопируйте 64-битный DLL-файл в папку System32;
- нажмите WIN+R для вызова окошка «Выполнить»;
- пропишите команду regsvr32.exe *****.dll и нажмите ENTER;
- если нужно зарегистрировать 32-битный DLL, поместите соответствующий файл в SysWOW64 и выполните C:WindowsSysWOW64regsvr32.exe *****.dll.
Если вы подберете подходящую библиотеку и правильно выполните ее регистрацию, то RegSvr32 не станет выдавать вам ошибки «Модуль не совместим с версией Windows».