Как зарегистрировать dll в windows server 2008

Обновлено: 07.07.2024

ИначеЕсли Строка(ДрайверУстройства) = "СБ РФ: Эквайринговые терминалы" Тогда

Попробовал как в статье второй вариант, dll вообще не регистрируется и пишет "Драйвер не установлен и версия не определена. Подскажите как можно подключить dll другими способами в терминале и как в статье на инфостарте. Заранее спасибо

дорогие форумчане,неужели так тяжело помочь.На форуме очень много тем насчет моей проблеме.но в них нет ничего путного
А вообще сначало удали и заново поставь.
У меня такая хрень была с 1с 7.7.
От имени админа стартанул - все ок стало.
регистрирую dll я всегда от имени администратора. Но почему dll слетает. Вот и я подумал , прочитав на инфостарте и на других сайта. может дело в процедуре подключения или как то напрямую подключить dll.
Насколько я в теме - напрямую ты ее не подключишь без регистрации в винде. Проблема не в 1с.

Здравствуйте!
Я автор статьи на инфостарте "Решение проблем с регистрацией внешних компонент в терминале". Попробовал разобраться в вашей проблеме.
Для начала попробовал установить драйвер эквайринговой системы на локальном компе в УТ 11. Пишет "Драйвер не установлен". Значит проблема с регистрацией dll.

С помощью программы OLE\COM Object Viewer от можно определить что dll действительно успешно зарегистрировалась и в системе имеется COM-объект с ProgID = AddIn.SBRFCOMObject. Однако ОбъектДрайвера = Новый("AddIn.SBRFCOMExtension") не создается.

Таким образом проблема с регистрацией dll решена.
Далее используйте рекомендации в моей статье по поводу регистрации в терминале.
Я думаю все должно заработать.

(8)Огромное спасибо, что откликнулись. С эквайринговым терминалом мучаюсь уже где то полугода. В конфигурации Розница 1.0 терминал мне удалось подключить без проблем.

1. Регистрируем внешнюю компоненту утилитой regsvr32.exe на сервере терминалов в папке в папке C:\WINDOWS\SYSWOW64.

и кстати у все dll хранились и регились ранее в папке пользователя ExtCompT

Ну, в 64-х разрядной Windows отведены специальные папки для dll:
System32 для тех что могут работать в 64-х разрядной среде и SysWOW64 для dll изначально написанных под 32-х разрядную среду исполнения.
Эта dll для эквайрингового терминала скорее всего была написана под 32-х разрядную среду. Поэтому мне кажется правильнее ее поместить в папку C:\WINDOWS\SYSWOW64, а не в папку пользователя ExtCompT.

Ограничения на регистрацию dll у пользователей терминала конечно же есть.
Об этом как раз я и писал в своей статье.
У них нет прав на запись в ветку системного реестра HKEY_CLASSES_ROOT.
Поэтому происходит отказ в регистрации внешней компоненты.

Я попробовал у себя под терминалом Windows server 2008 R2 x64 установить драйвера и посмотреть что получится.
У меня все нормально. Пишет "Драйвер установлен", "Версия не определена".
Так и должно быть.

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

Варианты решения проблемы

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

Способ 1: OCX/DLL Manager

OCX/DLL Manager – это маленькая программа которая может помочь зарегистрировать библиотеку или файл OCX.

OCX/DLL Manager также умеет отменять регистрацию библиотеки, для этого понадобится выбрать в меню пункт «Unregister OCX/DLL» и в последствии проделать все те же операции, как и в первом случае. Функция отмены может вам понадобиться для сравнения результатов при активированном файле и при отключенном, а также в процессе удаления некоторых компьютерных вирусов.

В процессе регистрации, система может выдать вам ошибку, говорящую о том, что требуются права администратора. В таком случае, нужно запустить программу нажав на неё правой кнопкой мыши, и выбрать «Запуск от имени администратора».

Запуск программы от имени администратора OCX DLL Manager

Способ 2: Меню «Выполнить»

Можно зарегистрировать DLL, используя команду «Выполнить» в стартовом меню операционной системы Windows. Для этого нужно будет произвести следующие действия:

  1. Нажать клавиатурную комбинацию «Windows + R» или выбрать пункт «Выполнить» из меню «Пуск».

Открываем меню Выполнить

Регистрируем DLL библиотеку через меню Выполнить

Этот пример подойдёт вам в том случае, если операционная система установлена на диск С. Если она находится в другом месте, то нужно будет поменять букву диска или воспользоваться командой:

Команда для регистрации dll которая сама находит папку где у вас установлена ОС

В таком варианте программа сама находит папку где у вас установлена ОС и запускает регистрацию указанного DLL файла.

В случае с 64-разрядной системой у вас будет две программы regsvr32 — одна находится в папке:

и вторая по пути:

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

и команда будет выглядеть уже так:

Команда для регистрации dll в 64-битной системе

Способ 3: Командная строка

  1. Выберите команду «Выполнить» в меню «Пуск».
  2. Впишите в открывшемся поле для ввода cmd.
  3. Нажмите «Enter».

Перед вами появится окно, в котором нужно будет вводить те же команды, что и во втором варианте.

Регистрируем DLL библиотеку через командную строку

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

Меню вставки в командной строке Windows

Способ 4: Открыть с помощью

  1. Откройте меню файла, который будете регистрировать, нажав по нему правой кнопкой мыши.
  2. Выберите «Открыть с помощью» в появившемся меню.

Регистрируем DLL библиотеку через меню Открыть с помощью

или в случае, если вы работаете в 64-битной системе, а файл DLL 32-разрядный:

Возможные ошибки

«Файл не совместим с установленной версией Windows» — это означает, что вы, скорее всего, пытаетесь зарегистрировать 64-разрядную DLL в 32-битной системе или наоборот. Воспользуйтесь соответствующей командой, описанной во втором способе.

В заключение нужно сказать, что суть всех предложенных вариантов одна и та же — это просто разные методы запуска команды регистрации — кому как удобнее.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

ИначеЕсли Строка(ДрайверУстройства) = "СБ РФ: Эквайринговые терминалы" Тогда

Попробовал как в статье второй вариант, dll вообще не регистрируется и пишет "Драйвер не установлен и версия не определена. Подскажите как можно подключить dll другими способами в терминале и как в статье на инфостарте. Заранее спасибо

дорогие форумчане,неужели так тяжело помочь.На форуме очень много тем насчет моей проблеме.но в них нет ничего путного
А вообще сначало удали и заново поставь.
У меня такая хрень была с 1с 7.7.
От имени админа стартанул - все ок стало.
регистрирую dll я всегда от имени администратора. Но почему dll слетает. Вот и я подумал , прочитав на инфостарте и на других сайта. может дело в процедуре подключения или как то напрямую подключить dll.
Насколько я в теме - напрямую ты ее не подключишь без регистрации в винде. Проблема не в 1с.

Здравствуйте!
Я автор статьи на инфостарте "Решение проблем с регистрацией внешних компонент в терминале". Попробовал разобраться в вашей проблеме.
Для начала попробовал установить драйвер эквайринговой системы на локальном компе в УТ 11. Пишет "Драйвер не установлен". Значит проблема с регистрацией dll.

С помощью программы OLE\COM Object Viewer от можно определить что dll действительно успешно зарегистрировалась и в системе имеется COM-объект с ProgID = AddIn.SBRFCOMObject. Однако ОбъектДрайвера = Новый("AddIn.SBRFCOMExtension") не создается.

Таким образом проблема с регистрацией dll решена.
Далее используйте рекомендации в моей статье по поводу регистрации в терминале.
Я думаю все должно заработать.

(8)Огромное спасибо, что откликнулись. С эквайринговым терминалом мучаюсь уже где то полугода. В конфигурации Розница 1.0 терминал мне удалось подключить без проблем.

1. Регистрируем внешнюю компоненту утилитой regsvr32.exe на сервере терминалов в папке в папке C:\WINDOWS\SYSWOW64.

и кстати у все dll хранились и регились ранее в папке пользователя ExtCompT

Ну, в 64-х разрядной Windows отведены специальные папки для dll:
System32 для тех что могут работать в 64-х разрядной среде и SysWOW64 для dll изначально написанных под 32-х разрядную среду исполнения.
Эта dll для эквайрингового терминала скорее всего была написана под 32-х разрядную среду. Поэтому мне кажется правильнее ее поместить в папку C:\WINDOWS\SYSWOW64, а не в папку пользователя ExtCompT.

Ограничения на регистрацию dll у пользователей терминала конечно же есть.
Об этом как раз я и писал в своей статье.
У них нет прав на запись в ветку системного реестра HKEY_CLASSES_ROOT.
Поэтому происходит отказ в регистрации внешней компоненты.

Я попробовал у себя под терминалом Windows server 2008 R2 x64 установить драйвера и посмотреть что получится.
У меня все нормально. Пишет "Драйвер установлен", "Версия не определена".
Так и должно быть.

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

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

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


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

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

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

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

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


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

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

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

В качестве дополнительного программного средства для управления регистрацией объектов COM, очень удобно пользоваться бесплатной утилитой от Nirsoft RegDLLView.exe . Программа не требует установки в системе, имеет небольшой размер и позволяет:


Проблема с регистрацией dll

Читать еще: Как зайти в редактор реестра Windows 10

Таким образом проблема с регистрацией dll решена.
Далее используйте рекомендации в моей статье по поводу регистрации в терминале.
Я думаю все должно заработать.

(8)Огромное спасибо, что откликнулись. С эквайринговым терминалом мучаюсь уже где то полугода. В конфигурации Розница 1.0 терминал мне удалось подключить без проблем.

1. Регистрируем внешнюю компоненту утилитой regsvr32.exe на сервере терминалов в папке в папке C:WINDOWSSYSWOW64.

Ну, в 64-х разрядной Windows отведены специальные папки для dll:
System32 для тех что могут работать в 64-х разрядной среде и SysWOW64 для dll изначально написанных под 32-х разрядную среду исполнения.
Эта dll для эквайрингового терминала скорее всего была написана под 32-х разрядную среду. Поэтому мне кажется правильнее ее поместить в папку C:WINDOWSSYSWOW64, а не в папку пользователя ExtCompT.

Ограничения на регистрацию dll у пользователей терминала конечно же есть.
Об этом как раз я и писал в своей статье.
У них нет прав на запись в ветку системного реестра HKEY_CLASSES_ROOT.
Поэтому происходит отказ в регистрации внешней компоненты.

Как зарегистрировать DLL в Windows


Пользователи спрашивают о том, как зарегистрировать dll файл в Windows 7 и 8. Обычно после того, как столкнулись с ошибками наподобие «Запуск программы невозможен, так как нужная dll отсутствует на компьютере». Об этом и поговорим.

На самом деле, регистрация библиотеки в системе не такая уж и сложная задача (покажу целых три вариации одного способа) — по сути, необходим лишь один шаг. Единственное обязательное требование — наличие у вас прав администратора Windows.

Читать еще: Как выключить энергосберегающий режим на Windows 7

Три способа регистрации DLL в ОС

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

Примечание: ниже будет описано, как зарегистрировать DLL библиотеку с помощью regsvr32.exe, однако обращаю ваше внимание на то, что если у вас 64-разрядная система, то у вас есть два regsvr32.exe — один в папке C:WindowsSysWOW64, второй — C:WindowsSystem32. И это разные файлы, причем 64-бит находится в папке System32. Рекомендую в каждом из способов использовать полный путь к regsvr32.exe, а не просто имя файла, как у меня показано в примерах.

Первый способ описывается в Интернете чаще других и состоит в следующем:



Второй способ состоит в запуске командной строки от имени администратора и ввода все той же команды из предыдущего пункта.


Опять же, вероятно, что вам не удастся зарегистрировать DLL в системе.


И последний способ, который также может пригодиться в некоторых случаях:

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

Почему не удается зарегистрировать DLL

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


На этом завершаю, надеюсь, что-то стало более ясно, чем было.

Я пытаюсь зарегистрировать COM-DLL файл в Windows Server 2008 R2. Вот шаги, которые я предпринял:

  • Запустите cmd как администратор
  • c:windowssystem32regsvr32.exe c:tempdltemp12.dll

Когда я выполняю эту команду, я получаю эту ошибку:

Не удалось загрузить модуль temp12.dll . Убедитесь, что двоичный файл хранится по указанному пути или дебютирует для проверки проблем с двоичными или зависимыми файлами .DLL . Указанный модуль не найден.

Мне удалось зарегистрировать один и тот же DLL файл в Windows 2000.

Я также пробовал

И я получил эту ошибку:

был загружен модуль c:tempdltemp12.dll , но вызов DllRegisterServer завершился с ошибкой 0x80040154 . Для получения дополнительной информации об этой проблеме выполните поиск в Интернете с помощью кода ошибки в качестве поискового запроса

  • 2
  • 8
  • 6 окт 2019 2019-10-06 17:01:48
  • Broken Link

Вам может потребоваться установить ATL, если ваши COM-объекты используют ATL, как описано в этой статье в KB:

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

  • 6 окт 2019 2019-10-06 17:01:50
  • vcsjones

Это то, что должно произойти.

Вы должны скопировать свою DLL, которую хотите зарегистрировать, чтобы: C:WindowsSysWOW64

DllRegisterServer в c:windowssystem32YourDLL.dll преуспел.

  • 6 окт 2019 2019-10-06 17:01:50
  • DevCompany

Вам нужен полный путь к regsvr32, поэтому% windir $ system32regsvr32

  • 6 окт 2019 2019-10-06 17:01:49
  • nitin jain

Если у вас нет доступа к исходному источнику DLL, я бы предложил использовать SysInternal Process Monitor для отслеживания запросов к реестру COM ( там используется более простой инструмент RegMon, но он может больше не работать).

Вы должны поместить фильтр в рабочий процесс (здесь: Regsvr32.exe), чтобы только захватывать то, что интересно. Затем вы должны искать запросы по HKEY_CLASSES_ROOT[a progid, строка], которая не работает (например, с ошибкой NAME_NOT_FOUND) или запросы по HKEY_CLASSES_ROOTCLSID[a guid], которые не работают.

PS: К сожалению, может быть много вещей, которые, похоже, терпят неудачу на отлично работающей системе Windows, поэтому вам придется тщательно изучать все ошибки. Удачи: -)

  • 6 окт 2019 2019-10-06 17:01:49
  • Simon Mourier

Возможно, вам потребуется зарегистрировать эту DLL, используя 32-разрядную версию regsvr32.exe :

Эта ошибка, которую вы получаете, когда сама DLL требует, чтобы другой COM-сервер регистрировался первым или имел зависимость от другой недоступной DLL. Средство Regsvr32.exe выполняется очень мало, он вызывает LoadLibrary() для загрузки DLL, которая передается в аргументе командной строки. Затем GetProcAddress(), чтобы найти точку входа DllRegisterServer() в DLL. И вызывает его, чтобы оставить его на COM-сервере, чтобы зарегистрировать себя.

Чтобы устранить эту проблему, используйте инструмент ProcMon SysInternals. Он показывает вам, какие ключи реестра Regsvr32.exe(на самом деле: COM-сервер) открывается, чтобы найти сервер. Ищите доступ к ключу CLSID. Это дает вам подсказку, что он ищет. Это все еще не совсем скажет вам серверную DLL, вы должны сравнить трассировку с той, которую вы получаете от машины, которая работает. Ключ InprocServer32 имеет путь к DLL.

Читайте также: