Компонент ActiveX не может создать объект

Я только что установил стороннее приложение на моем сервере Windows Server 2008 и я получаю

компонент ActiveX не может создать объект

сообщение, когда я пытаюсь открыть с помощью CreateObject в VBScript.

Он определенно установлен и существует в разделе "Программы и функции". У кого-нибудь есть список вещей, которые я могу проверить, чтобы выяснить, что происходит?

теперь я попытался зарегистрировать DLL с помощью regsvr32.exe /i bob.dll as предложили, но я получаю эту ошибку:

Модуль "Боб.dll " был загружен, но точка входа DllRegisterServer была не найдено.

убедитесь, что "Боб.dll " является допустимым DLL или OCX-файлом, а затем повторите попытку.

Я должен отметить, что это 32-разрядное приложение на 64-разрядной машине на этот момент. Он также отлично работает на моей машине, которая является Windows XP 32-бит.

11 ответов


оказывается, чтобы это приложение работало под VBScript, мне пришлось сделать две вещи.

  1. Выполнить RegAsm.exe для регистрации DLL.
  2. запустите C:\Windows\SysWOW64\cscript - ... exe для запуска моего VBScript.

Спасибо за вашу помощь.

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


также стоит проверить, что у вас есть "включить 32-разрядные приложения", установленное в True в расширенных настройках DefaultAppPool в IIS.


приложение пытается создать COM-объект, и даже если эта COM DLL существует, это может зависеть от другой DLL, которая не установлена. Вы можете использовать DependencyWalker чтобы узнать, так ли это.


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

для любых бедных душ, идущих этим путем в будущем, проверьте настройки браузера -

для меня, используя IE, исправление должно было войти в инструменты / Свойства обозревателя, вкладку безопасности, для соответствующей зоны "пользовательский уровень" и проверить настройки ActiveX. Параметр "использование элементов ActiveX, не помеченных как безопасные для использования", чтобы "включить" исправлена эта проблема для меня


также при регистрации компонента убедитесь, что вы используете 32-разрядную версию regsvr32.исполняемый. Если вы просто запустите regsvr32.exe в повышенном приглашении по умолчанию будет принимать стандартную 64-разрядную версию (которая, как ни странно, находится в C:\Windows\System32)

версия я считаю, что вам нужно, находится в C:\Windows\SysWow64\regsvr32.exe


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

например, для этого кода:

set objFSO = CreateObject("Scripting.FileSystemObject") 

Я бы поискал Scripting.FileSystemObject в реестре. Затем я бы посмотрел на раздел реестра выше найденного значения, для InProcServer32 значение. Это даст вам путь к файлу ActiveX, который он был зарегистрирован С (для Scripting.FileSystemObject файл "c:\windows\system32\scrrun - ... файл DLL.)"

если вы не можете найти свой progID в реестре, то он не зарегистрирован в вашей системе, которая является вашей проблемой. Если он не зарегистрирован, вам нужно узнать, какой файл регистрирует его, что обычно является .ocx или a .dll в том же пути к папке вашего стороннего приложения, а затем зарегистрировать эти файлы. Вот команда для регистрации файла:

regsvr32 /i "c:\windows\system32\scrrun.dll"

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


Если это 32-битный COM / Active X, Используйте 32-битную версию cscript.exe / wscript.exe, расположенный в папке\C:\Windows\SysWOW64


Я также встречаю ту же ошибку в vbscript.

Set objFSO = CreateObject("Scripting.FileSystemObject")

устранение:
Откройте командную строку, запустите:

regsvr32 /i "c:\windows\system32\scrrun.dll"

и работает


У меня была такая же проблема в программе VB6, которую я пишу, где форма использует объект ScriptControl для запуска vbscripts, выбранных пользователем.

Он работал нормально, пока на днях, когда он внезапно начал отображать "ошибка выполнения 429", когда VBScript попытался создать сценарий.Filesystemobject, с.

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

к счастью, У меня была резервная версия этой формы: я сравнил их коды и обнаружил, что непреднамеренно установил свойство UseSafeSubset моего объекта ScriptControl в True.

Это была единственная разница в форме, и после восстановления резервной копии, он работал как шарм.

надеюсь, это может быть полезно кому-то. Вверх с VB6! :-)

Макс - Италия


У меня была такая же проблема с Excel, я пытался использовать 32 COM DLL с версией Excel 64 бит, и я получил эту ошибку. Я перестраиваю com dll до 64-битной версии, и ошибка исчезает. Поэтому убедитесь, что ваша com dll имеет ту же архитектуру (x86 vs x64), что и ваше приложение.


У меня тоже эта проблема. Я пытался запустить старую 32-битную dll в 64-битной системе. Я заставил его работать, скопировав .dll для C:\Windows\SysWoW64\ каталог и запуск этого:

%systemroot%\SysWoW64\regsvr32 "C:\Windows\SysWoW64\thenameofyourdll.dll"

и включение IIS для запуска 32-разрядных приложений