Как зарегистрировать dll в реестре виста. Регистрируем библиотеки DLL в Windows

Модель многокомпонентных объектов (C omponent O bject M odel - СОМ ) является основным средством взаимодействия программ любых типов: библиотек, приложений, системного программного обеспечения и т.п. и определяет стандартный механизм, с помощью которого одна часть программного обеспечения (сервер) предоставляет свои сервисы другой (клиент) , что обеспечивается применением определенных протоколов взаимодействия между ними (между клиентом и сервером). В качестве сервера может использоваться динамически подключаемая библиотека (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 ] DLL-файл

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

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

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

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

Примеры использования regsvr32.exe :

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 . Программа не требует установки в системе, имеет небольшой размер и позволяет:

Получить в удобном виде список всех зарегистрированных в системе объектов.

Выполнить регистрацию или отмену регистрации выбранных объектов.

Создать reg-файл для выполнения отмены регистрации одной или нескольких DLL.

Зарегистрировать или перерегистрировать указанный файл.

Кроме того, имеется возможность проверить цифровые подписи исполняемых файлов зарегистрированных объектов, просмотреть или изменить их свойства, а также выполнить запуск редактора реестра с отображением информации выбранного GUID через пункт контекстного меню ”Open in Regedit”, вызываемого правой кнопкой мышки.

При попытке запустить игру или приложение мы можем столкнуться с ошибками вида «точка входа dllregisterserver не найдена» или «запуск приложения невозможен, отсутствует.dll файл». Подобных вариаций может быть несколько, но суть одна: нужных библиотек нет вовсе или они не зарегистрированы. Итак, давайте разберемся, как задействовать библиотеку в операционной системе и что делать, если проблема не решилась.

Описание ошибки

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

Причины возникновения

Причинами появления данной проблемы может быть ряд событий:

  1. Заражение вирусом. Нежелательное ПО способно повредить и удалить библиотеки с компьютера. Для этого стоит проверить машину на вирусы и удалить их с жесткого диска.
  2. Ошибка программы установки. Как правило, поставщик программного обеспечения добавляет все необходимые системные файлы в установочный пакет для работы приложения. Но иногда разработчики забывают об этом. Итог – если на компьютере нет подходящих ресурсов (которые установились с другим приложением), ваша программа не запустится. Гораздо обиднее, если за данный софт вы заплатили круглую сумму.

    Внимание! В некоторых случаях программа установки сама предупреждает о необходимости скачать дополнительный контент для работы приложения. Например, для некоторых игр предлагается установить отдельно DirectX последней версии.

  3. Системная ошибка. По различным обстоятельствам, которые от нас не всегда зависят, Windows может потерять из виду некоторые.dll файлы. Причиной тому становятся неосторожные манипуляции с записями реестра.

Способы регистрации библиотек

Существует два способа добавления.dll файлов в реестр системы.

С помощью командной строки

Для этого потребуется выполнить следующие действия:


С помощью окна «Выполнить»

Способ в два клика:


Почему не получается зарегистрировать.dll и как это исправить?

Существует три причины неудачи при регистрации системных файлов:

  1. Библиотека уже зарегистрирована. В данном случае причина - сам файл, который поврежден или заражен вирусом.
  2. Регистрация невозможна. Файл.dll может просто оказаться пустышкой или быть несовместимым с версией и компонентами операционной системы.

    Внимание! Никогда не скачивайте файлы.dll с файлообменников и прочих подозрительных сайтов. Загружайте библиотеки только с официальных источников!

  3. Функция регистрации отсутствует. Некоторые библиотеки не предназначены для регистрации и попросту не имеют данной функции.

Существует три способа для выхода из сложившегося положения:

  1. Скачайте официальный компонент системы с ресурса поставщика. Например, для файла xlive.dll нужно загрузить и установить пакет Microsoft Games for Windows, который можно скачать на сайте Microsoft.

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

  2. В случае, если вы разработчик и создали свою библиотеку, зарегистрируйте ее с помощью regasm.exe.
  3. Иногда для задействования.dll файла нужно переместить его в папку с приложением - в директорию, где хранится исполняющий файл.exe.

Итак, мы рассмотрели ряд способов по регистрации библиотек в системе и ликвидации ошибки «точка входа dllregisterserver не найдена». Их должно хватить. Но если у вас уникальная ситуация или известен другой путь решения проблемы – поделитесь, пожалуйста, им в комментариях.

Файл DLL – компонент динамически подключаемой библиотеки, чьи элементы используют практически все программы. Библиотека DLL файлов расположена в корневой папке системы. Компоненты должны быть все в наличии, иметь цифровую подпись, правильно работать и быть актуальными по версии. Если одно из требований не соблюдено, при запуске программы пользователь получит информационное уведомление: ошибка DLL. Неисправность свидетельствует о том, что отсутствует DLL файл, поврежден или устарел.

Как установить DLL файл

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

Помещение и регистрация файлов библиотеки

Перед тем как установить DLL файл на Windows 7,8,10, их нужно скачать, причем точно под разрядность системы.

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

Шаг 1 . Кликаем правой кнопкой мыши по "Мой компьютер" и выбираем "Свойства"

Шаг 2. В открывшемся окне, мы может прочитать свойства компьютера, версию операционной системы и её разрядность 32 (х86) или 64 бит. В нашем случаи стоит 64-разрядная операционная система Windows 10.

·

Шаг 3. После скачивания файлов их нужно поместить в корневую папку, зарегистрировать

для х32 (х86) систем компонент необходимо заменить или поместить в папку C:\Windows\System32;

для х64 необходимо выполнить замену или переместить в папку C:\Windows\ SysWOW64;

Шаг 4. Файл нужно зарегистрировать в системе.

Сделать это можно, открыв командную строку комбинацией «Win» + «R», или нажать «Пуск» и «Выполнить»;

в открывшемся окне ввести через пробел следующее: regsvr32 имя файла.dll – где, «regsvr32» ─ команда для регистрации, а «имя файла.dll» – полное имя вставленного компонента;

или же можно прописать расположение файла вручную - regsvr32.exe + путь к файлу

Шаг 5. Нажмите "ОК", и перезагрузите компьютер, и новые параметры вступят в силу.

Сразу хочется отметить, что при регистрации возможны появления ошибок. Например: "Не удалось загрузить модуль". Обычно они возникают по 3 причинам

  1. Не правильно прописан путь к файлу, или файл не был перемещен в каталог System32 или SysWOW64
  2. Не все файлы DLL вообще нуждаются в регистрации, иногда достаточно просто скопировать их в каталок System32 или SysWOW64 или поместить в корень проблемной игры или программы
  3. Файлы уже были зарегистрированы ранее

Второй способ регистрации

Шаг 1. Зарегистрировать файл можно с помощью командой строки, которую нужно запустить от имени администратора.

Шаг 2. Пишем команду regsvr32.exe + путь к файлу и жмём "Enter"

Шаг 3. Появится сообщение что "Всё прошло удачно", и просто перезагружаем компьютер

Вот и всё, файл зарегистрирован, можете пробовать запускать вашу игру или программу

А вот, некоторые советы, которые могут вам пригодиться.

  • Помещайте элементы только в указанную папку (возможно, она будет скрыта по умолчанию). Вам нужно убрать галочку «Не показывать скрытые папки» в настройках отображения.
  • Если при замене файла требуется разрешение администратора – подтвердите действие.
  • Выбирайте только актуальные файлы на момент загрузки и сохраните их себе в компьютер отдельно. Вам они могут еще пригодиться. В случае если проблема образуется вновь, вы быстро восстановите работоспособность системы.

Не регистрируется Dll, ActiveX под Windows 7 - что делать?

В привычных всем Windows до XP включительно регистрация Dll, ActiveX компонентов без проблем выполнялась командой regsvr32.

В Windows 7 в принципе то же самое, но внесены некоторые "усовершенствования", из-за чего привычный порядок действий нередко не дает ожидаемого результата. Например:

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

А именно: окно терминала (командной строки, cmd) следует открывать командой "Запуск от имени администратора" (доступно нажатием правой кнопки мыши).

В большинстве случаев это решает проблему.

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

В частности, клиентская часть 1С (т.е. та 1С, с которой работает пользователь) является 32 битным приложением. (Вот сервер 1С уже может быть как 32 битным, так и 64битным, но это касается больших организаций, если у Вас 1С Бухгалтерия и 5 пользователей, то 99% что у Вас никакого сервера 1С нет и все 32 битное).

ActiveX компоненты также могут быть 32 битными или 64 битными, причем должна использоваться та версия, разрядность которой соответствует приложению. OcvitaBarcode ActiveX является 32 битным приложением.

Так вот, программы для регистрации 32битных и 64 битных ActiveX в Windows 6 64 битной тоже разные, но при этом они обе называются regsvr32.exe. (Как говорил Козьма Прутков, "если на клетке со слоном написано "буйвол", не верь глазам своим".) Поэтому, если Вы просто набираете в командной строке

regsvr32 какая-то.ocx

то в теории должна запуститься нужная regsvr32, на практике может запуститься что угодно. Зачем так сделано? ну все за тем же, если сразу сделать по-человечески, кто будет новую версию Windows покупать.

Поэтому для гарантированного запуска 32битной regsvr32, следует в окне терминала набирать команду

c:\windows\syswow64\regsvr32.exe OcvitaBarcode.ocx

Если windows установлена не в c:\windows, то путь естественно, указываем какой есть. И помним, что окно терминала следует открывать от имени администратора.

При соблюдении вышеуказанных правил 32битные ActiveX, в т.ч. OcvitaBarcode ActiveX без проблем работают в Windows 7:




точка входа dllregisterserver не найдена (12)

Ну, вы не укажете, является ли это 32 или 64-разрядной dll, и вы не включаете сообщение об ошибке, но я догадываюсь, что это та же проблема, что описана в этой статье в KB: Сообщение об ошибке при запуске Regsvr32.exe на 64-битной Windows

Цитата из этой статьи:

Это происходит потому, что файл Regsvr32.exe в папке System32 является 64-разрядной версией. Когда вы запускаете Regsvr32 для регистрации DLL, вы используете 64-разрядную версию по умолчанию.

Решение этой статьи:

Чтобы устранить эту проблему, запустите Regsvr32.exe из папки% SystemRoot% \ Syswow64. Например, введите следующие команды для регистрации DLL: cd \windows\syswow64 regsvr32 c:\filename.dll

Я попытался использовать следующий код:

Cd c:\windows\system32 regsvr32.exe dllname.ax

Но это не работает для меня. Как я могу зарегистрировать DLL-файл в Windows 7 с 64-разрядным процессором?

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

Следующий пакетный файл избавляет пользователя от необходимости переместить файлы в / из системных папок. Он также оставляет его в Windows для применения правильной версии Regsvr32 .

ИНСТРУКЦИИ:

    Echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS copy %1 C:\Windows\System32 regsvr32 "%nx1" echo END BATCH FILE pause echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS copy %1 C:\Windows\SysWOW64 regsvr32 "%nx1" echo END BATCH FILE pause

    Сохраните новый текстовый файл в виде пакета (-.bat); затем просто перетащите свой -.dll или -.ax поверх командного файла.

  • Если UAC не дает вам возможности запуска командного файла в качестве администратора, вам может потребоваться вручную повысить привилегии (инструкции для Windows 7):

    1. Щелкните правой кнопкой мыши командный файл;
    2. Выберите Create shortcut ;
    3. Щелкните правой кнопкой мыши ярлык;
    4. Выберите « Properties ;
    5. Перейдите на вкладку Compatibility ;
    6. Установите флажок « Run this program as administrator
    7. Перетащите файл -.dll или -.ax поверх нового ярлыка вместо командного файла.

Вот и все . Я выбрал COPY вместо MOVE чтобы предотвратить отказ от последующих попыток (ов), связанных с UAC. После успешной регистрации следует удалить файл исходной библиотеки ( -.dll или -.ax ).

Не беспокойтесь о копиях, сделанных в системную папку ( C:\Windows\System32 или C:\Windows\SysWOW64 ) с помощью предыдущих проходов - они будут перезаписаны каждый раз, когда вы запускаете командный файл.

Если вы не запустили неправильный командный файл , в этом случае вы, вероятно, захотите удалить копию, выполненную в неправильной системной папке ( C:\Windows\System32 или C:\Windows\SysWOW64), перед запуском соответствующего пакетного файла, ... или...

  • Справка Windows выбирает правильный файл библиотеки для регистрации, полностью определяя местоположение своего каталога.

    1. Из правого пакетного файла скопируйте путь к системной папке
      • Если 64-бит: C:\Windows\System32
      • Если 32-бит: C:\Windows\SysWOW64
    2. Вставьте его на следующую строку, чтобы он предшествовал %nx1
      • Если 64-бит: regsvr32 "C:\Windows\System32\%nx1"
      • Если 32-бит: regsvr32 "C:\Windows\SysWOW64\%nx1"
        • Вставить путь внутри кавычек
        • Вставить обратную косую черту, чтобы отделить %nx1 от пути к системной папке
      • или ...
  • Запустите этот пакетный файл дробовика, который будет (по порядку):

    1. Выполнять очистку от прерывистых процессов регистрации
      • Отменить любой процесс регистрации, завершенный файлом вашей библиотеки;
      • Удалите все копии файла вашей библиотеки, сохраненные в системной папке;
    2. Попытка 64-разрядной установки в файле библиотеки
      • Скопируйте файл библиотеки в папку C:\Windows\System32 ;
      • Зарегистрируйте файл библиотеки как 64-битный процесс;
    3. Отменить 64-разрядную установку
      • Отменить любую регистрацию файла вашей библиотеки в виде 64-битного процесса;
      • Удалите файл библиотеки из C:\Windows\System32 ;
      • Пауза, чтобы разрешить вам завершить командный файл в этот момент (и запустить другой, если хотите).
    4. Попробуйте 32-битную установку в файле библиотеки
      • Скопируйте файл библиотеки в папку C:\Windows\SystemWOW64
      • Зарегистрируйте файл библиотеки как 32-битный процесс;
      • Пауза, чтобы разрешить вам завершить командный файл в этот момент.
    5. Удалить оригинальную незарегистрированную копию файла библиотеки

Знание сообщения об ошибке было бы весьма ценным. Он предназначен для предоставления информации, хотя для вас это не имеет никакого смысла. Будучи вынужденным догадаться, я бы сказал, что DLL - это 32-разрядный DirectX-фильтр. В этом случае это должен быть правильный ход действий:

Cd c:\windows\syswow64 move ..\system32\dllname.ax . regsvr32.exe dllname.ax

Это должно выполняться в командной строке с повышенными правами, чтобы UAC не мог остановить доступ к реестру, который требуется. Задайте больше вопросов об этом на superuser.com

Введите regsvr32 name.dll в командную строку (выполняется в режиме повышенной безопасности!) И нажмите «Ввод». Обратите внимание, что name.dll должно быть заменено именем DLL, которое вы хотите зарегистрировать. Например, если вы хотите зарегистрировать iexplore.dll, введите regsvr32 iexplore.dll .

Если DLL 32 бит:

Скопируйте DLL в C: \ Windows \ SysWoW64 \
В командной строке с повышенными %windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll: %windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

если DLL - 64 бит:

Скопируйте DLL в C: \ Windows \ System32 \
В командной строке с повышенными правами: %windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

Я знаю, что это кажется неправильным, но так оно и работает. Видеть:

Наконец, я нашел решение просто запустить CMD в качестве администратора, а затем написать

Cd \windows\syswow64

затем напишите

Regsvr32 c:\filename.dll

Я надеюсь, что ответ поможет вам

В Windows 7 есть разница. Вход в систему как администратор не дает тех же прав, что и при запуске программы в качестве администратора.

Перейдите в меню «Пуск» - «Все программы» - «Аксессуары». Щелкните правой кнопкой мыши в окне Command и выберите «Запуск от имени администратора». Теперь зарегистрируйте DLL, как правило, через: regsrvr32 xxx.dll

Вам нужно запустить cmd.exe в c:\windows\system32\ by administrator

Команды: для отписки * .dll файлов

regsvr32.exe /u C:\folder\folder\name.dll

Для регистрации * .dll файлов

Regsvr32.exe C:\folder\folder\name.dll

В системе x64 система32 предназначена для 64 бит, а syswow64 - для 32 бит (а не наоборот, как указано в другом ответе). WOW (Windows в Windows) - это 32-разрядная подсистема, работающая под 64-разрядной подсистемой).

Это беспорядок в терминах именования и служит только для путаницы, но так оно и есть.

Еще раз...

syswow64 - 32 бит, а не 64 бит.

system32 - 64 бит, а не 32 бит.

В каждом из этих каталогов есть regsrv32. Один из них - 64 бит, а другой - 32 бит. Это та же самая сделка с odbcad32 и et al. (Если вы хотите увидеть 32-битные ODBC драйверы, которые не будут отображаться с по умолчанию odbcad32 в system32, который является 64-битным.)

Все здесь провалилось как неправильный путь. Затем я вспомнил трюк из старых дней Win95. Откройте папку программы, в которой находится.dll, откройте C: / Windows / System32, прокрутите страницу до regsvr32 и перетащите DLL из папки программы на rgsrver32. Boom, сделано.

Откройте меню «Пуск» и введите cmd в поле поиска. Удерживайте Ctrl + Shift и нажмите «Ввод».

Выполняется командная строка в режиме администратора.

Теперь введите: regsvr32 MyComobject.dll