Подтвердить что ты не робот

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

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

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

когда я пытаюсь получить доступ, используя CreateObject в VBScript.

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

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

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

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

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

4b9b3361

Ответ 1

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

  • Запустите RegAsm.exe для регистрации DLL.
  • Запустите C:\Windows\SysWOW64\cscript.exe для запуска моего VBScript.

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

Для меня, используя IE, исправление заключалось в том, чтобы перейти в "Инструменты/Свойства обозревателя", вкладку "Безопасность" для соответствующей зоны "Пользовательский уровень" и проверить настройки ActiveX. Установка "Инициализировать и script Элементы ActiveX, не помеченные как безопасные для сценариев", "Включить", исправили эту проблему для меня

Ответ 5

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

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

Ответ 6

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

Пример для этого кода:

set objFSO = CreateObject("Scripting.FileSystemObject") 

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

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

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

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

Ответ 7

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

Ответ 8

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

Set objFSO = CreateObject("Scripting.FileSystemObject")

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

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

и он работает

Ответ 9

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

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

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

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

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

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

Макс - Италия

Ответ 10

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

Ответ 11

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

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

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

Ответ 12

Я знаю, что это старая ветка, но кто-нибудь проверял, не блокирует ли их антивирус Win32API и сценарии в их системах? Я установил CylanceProtect в моей офисной системе и обнаружил те же проблемы, что и другие. Это можно подтвердить, если вы проверите журналы Windows в средстве просмотра событий.