Зарегистрировать DLL файл в Windows Server 2008 R2
Я пытаюсь зарегистрировать COM-DLL файл в Windows Server 2008 R2. Вот шаги, которые я предпринял:
- Запустите cmd как администратор
- c:\windows\system32\regsvr32.exe c:\tempdl\temp12.dll
Когда я выполняю эту команду, я получаю эту ошибку:
Не удалось загрузить модуль temp12.dll . Убедитесь, что двоичный файл хранится по указанному пути или дебютирует для проверки проблем с двоичными или зависимыми файлами .DLL . Указанный модуль не найден.
Мне удалось зарегистрировать один и тот же DLL файл в Windows 2000.
И я получил эту ошибку:
был загружен модуль c:\tempdl\temp12.dll , но вызов DllRegisterServer завершился с ошибкой 0x80040154 . Для получения дополнительной информации об этой проблеме выполните поиск в Интернете с помощью кода ошибки в качестве поискового запроса
Эта ошибка, которую вы получаете, когда сама DLL требует, чтобы другой COM-сервер регистрировался первым или имел зависимость от другой недоступной DLL. Средство Regsvr32.exe выполняется очень мало, он вызывает LoadLibrary() для загрузки DLL, которая передается в аргументе командной строки. Затем GetProcAddress(), чтобы найти точку входа DllRegisterServer() в DLL. И вызывает его, чтобы оставить его на COM-сервере, чтобы зарегистрировать себя.
То, что делает этот код, довольно неочевидно. Однако диагностика, которую вы получили, довольно очевидна из кода ошибки, по какой-то причине этому COM-серверу требуется еще один, который должен быть зарегистрирован первым. Сообщение об ошибке дрябло, оно не сообщает вам, какой другой сервер ему нужен. Печальный побочный эффект работы обработки ошибок COM.
Чтобы устранить эту проблему, используйте инструмент ProcMon SysInternals. Он показывает вам, какие ключи реестра Regsvr32.exe(на самом деле: COM-сервер) открывается, чтобы найти сервер. Ищите доступ к ключу CLSID. Это дает вам подсказку, что
Регистрация DLL-файла в Windows Server 2008 R2
Я пытаюсь зарегистрировать файл com DLL на Windows Server 2008 R2. Вот шаги, которые я предпринял:—9—>
- Run cmd в качестве администратора
- c:\windows\system32\regsvr32.exe c:\tempdl\temp12.dll
когда я выполняю эту команду, я получаю эту ошибку:
модуль temp12.dll не удалось загрузить. Проверьте, что двоичный файл хранится на указанном пути или дебют, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми .DLL файлы. Указанный модуль не может быть найдено.
я смог зарегистрировать тот же файл DLL в Windows 2000.
и я получил эту ошибку:
модуль c:\tempdl\temp12.dll был загружен, но вызов DllRegisterServer ошибка с кодом 0x80040154 . Для получения дополнительной информации об этой проблеме выполните поиск в интернете, используя код ошибки в качестве условия поиска
8 ответов
Это ошибка, которую вы получаете, когда сама DLL требует, чтобы другой COM-сервер был зарегистрирован первым или имеет зависимость от другой DLL, которая недоступна. К Regsvr32.exe инструмент делает очень мало, он вызывает LoadLibrary () для загрузки DLL, которая передается в аргументе командной строки. Затем GetProcAddress (), чтобы найти точку входа DllRegisterServer () в DLL. И вызывает его, чтобы оставить его до COM-сервера для регистрации.
Что это код делает, это справедливо неопределяемых. Диагностика, которую вы получили, однако, довольно очевидна из кода ошибки, по какой-то причине этот COM-сервер должен быть зарегистрирован первым. Сообщение об ошибке дерьмово, оно не говорит вам что другой, он должен. Печальный побочный эффект того, как работает обработка ошибок COM.
для устранения неполадок используйте инструмент ProcMon SysInternals. Он показывает вам, какие ключи реестра Regsvr32.exe (на самом деле: COM-сервер) открывается, чтобы найти сервер. Искать доступ к ключу CLSID. Это дает вам подсказку, что
вам может потребоваться зарегистрировать эту DLL, используя 32-разрядную версию regsvr32.exe :
ошибка 0x80040154-это REGDB_E_CLASSNOTREG COM, что означает «класс не зарегистрирован». В основном класс COM не объявляется в реестре установки.
Если вы получите эту ошибку при попытке зарегистрировать DLL, возможно, что регистрационный код для этой DLL пытается создать экземпляр другое COM-сервер (DLL или EXE), который отсутствует или не зарегистрирован в этой установке.
Если у вас нет доступа к исходному источнику DLL, я бы предлагаю использовать SysInternal-х Контролировать Процесс инструмент для отслеживания поиска реестра COM (используется более простой инструмент RegMon, но он может больше не работать).
вы должны поставить фильтр на рабочий процесс (здесь: Regsvr32.exe), чтобы захватить только то, что интересно. Тогда вы должны искать запросы на HKEY_CLASSES_ROOT\[a progid, строка], которая терпит неудачу (например, с ошибкой NAME_NOT_FOUND), или запросы на HKEY_CLASSES_ROOT\CLSID\[guid], которые неудача.
PS: к сожалению, может быть много вещей, которые, кажется, терпят неудачу в отлично работающей системе Windows, поэтому вам придется тщательно изучить все ошибки. Удачи 🙂
Регистрируем файл DLL в ОС Windows
После установки различных программ или игр можно столкнуться с ситуацией, когда при включении возникает ошибка «Запуск программы произвести невозможно, так как требуемой DLL нет в системе». Несмотря на то, что ОС семейства Windows обычно регистрируют библиотеки в фоновом режиме, после того, как вы скачаете и поместите ваш DLL файл в соответствующее место, ошибка все равно возникает, и система просто его «не видит». Чтобы это исправить, нужно зарегистрировать библиотеку. Как это можно сделать, будет рассказано далее в этой статье.
Варианты решения проблемы
Имеется несколько методов, позволяющих устранить данную проблему. Рассмотрим каждый из них подробнее.
Способ 1: OCX/DLL Manager
OCX/DLL Manager – это маленькая программа которая может помочь зарегистрировать библиотеку или файл OCX.
Для этого вам нужно будет:
- Нажать на пункт меню «Register OCX/DLL».
- Выбрать тип файла, который будете регистрировать.
- При помощи кнопки «Browse» указать местоположение DLL.
- Нажать на кнопку «Register» и программа сама зарегистрирует файл.
OCX/DLL Manager также умеет отменять регистрацию библиотеки, для этого понадобится выбрать в меню пункт «Unregister OCX/DLL» и в последствии проделать все те же операции, как и в первом случае. Функция отмены может вам понадобиться для сравнения результатов при активированном файле и при отключенном, а также в процессе удаления некоторых компьютерных вирусов.
В процессе регистрации, система может выдать вам ошибку, говорящую о том, что требуются права администратора. В таком случае, нужно запустить программу нажав на неё правой кнопкой мыши, и выбрать «Запуск от имени администратора».
Способ 2: Меню «Выполнить»
Можно зарегистрировать DLL, используя команду «Выполнить» в стартовом меню операционной системы Windows. Для этого нужно будет произвести следующие действия:
- Нажать клавиатурную комбинацию «Windows + R» или выбрать пункт «Выполнить» из меню «Пуск».
Ввести имя программы, которая будет регистрировать библиотеку — regsvr32.exe, и путь, по которому размещен файл. В итоге должно получиться так:
где dllname — это имя вашего файла.
Этот пример подойдёт вам в том случае, если операционная система установлена на диск С. Если она находится в другом месте, то нужно будет поменять букву диска или воспользоваться командой:
В таком варианте программа сама находит папку где у вас установлена ОС и запускает регистрацию указанного DLL файла.
В случае с 64-разрядной системой у вас будет две программы regsvr32 — одна находится в папке:
Это разные файлы, которые используются раздельно для соответствующих ситуаций. Если у вас 64-битная ОС, а файл DLL 32-битный, тогда сам файл библиотеки должен быть помещен в папку:
и команда будет выглядеть уже так:
Способ 3: Командная строка
Регистрация файла через командную строку не сильно отличается от второго варианта:
- Выберите команду «Выполнить» в меню «Пуск».
- Впишите в открывшемся поле для ввода cmd.
- Нажмите «Enter».
Перед вами появится окно, в котором нужно будет вводить те же команды, что и во втором варианте.
Надо отметить, что у окна командной строки имеется функция вставки скопированного текста (для удобства). Найти это меню можно, нажав правой кнопкой на пиктограмме в левом верхнем углу.
Способ 4: Открыть с помощью
- Откройте меню файла, который будете регистрировать, нажав по нему правой кнопкой мыши.
- Выберите «Открыть с помощью» в появившемся меню.
Нажимаете «Обзор» и выберете программу regsvr32.exe из следующей директории:
или в случае, если вы работаете в 64-битной системе, а файл DLL 32-разрядный:
Возможные ошибки
«Файл не совместим с установленной версией Windows» — это означает, что вы, скорее всего, пытаетесь зарегистрировать 64-разрядную DLL в 32-битной системе или наоборот. Воспользуйтесь соответствующей командой, описанной во втором способе.
«Точка входа не найдена» — не все библиотеки DLL можно зарегистрировать, некоторые из них просто не поддерживают команду DllRegisterServer. Также, возникновение ошибки может быть вызвано тем, что файл уже зарегистрирован системой. Существуют сайты, распространяющие файлы, которые в реальности не являются библиотеками. В таком случае, естественно, зарегистрировать ничего не выйдет.
В заключение нужно сказать, что суть всех предложенных вариантов одна и та же — это просто разные методы запуска команды регистрации — кому как удобнее.