Как мне разрешить "Ошибка времени выполнения" 429: компонент ActiveX не может создать объект? "

В моей компании есть приложение VB6 с использованием Crystal Reports 7, которое клиент попросил установить на 32-разрядной версии Windows 7. В настоящее время он установлен на компьютерах под управлением Windows XP 32 бит SP2 на клиенте. Соединение с БД выполняется с помощью экземпляра ODBC для SQL Server 2000 на другом сервере.

В Windows 7 установка работает нормально, однако при попытке открыть приложение появляется ошибка.

Я рассмотрел следующее:

  • Регистрация всех файлов dll и ocx с помощью regsvr32. Некоторые не будут регистрироваться, поскольку они либо уже зарегистрированы, либо указано следующее сообщение "Убедитесь, что" [имя].dll "является допустимым DLL или OCX файлом, а затем повторите попытку". Я прочитал эту тему форума относительно этого: http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/0653f685-4526-45d9-89f3-8c479a6b4c62
  • Отслеживает открытие приложения с помощью приложения ProcessMonitor, чтобы попытаться определить, есть ли отсутствующий файл dll или ocx - это, похоже, не так.
  • Просмотрел приложение в соответствии с этот список, и ничто не противоречит этим рекомендациям.

Я заметил два элемента в базе знаний, которые относятся к этому

  • http://support.microsoft.com/kb/281848 - comdlg32.ocx в комплекте с приложением - версия 6.0.81.69, а одно в папке system32 на машине dev (бит WinXP 32 бит) - 6.1.97.82, Однако, если это была проблема, то, конечно, она не будет работать в настоящее время?
  • http://support.microsoft.com/kb/184898 - Я не уверен, как подтвердить, что это проблема.

Наконец, из-за сложностей мне не разрешено вносить изменения в это приложение. Даже если бы я был, я не программист VB6, просто парень, который получил страшный проект поддержки! Если необходимы изменения кода, тогда мне придется исследовать с помощью режима WinXP.

Обновить. Я получаю ту же ошибку в режиме XP. Это Win XP с виртуальной машиной SP3. Это работает на Win XP SP2 VM, возможно ли что-то в SP3, которое могло бы вызвать это? Или это просто факт, что это режим XP?

Ответ 1

Файл msrdo20.dll отсутствует при установке.

Согласно выражение поддержки для Visual Basic 6.0 в Windows Vista, Windows Server 2008 и Windows 7, этот файл должен быть распространен вместе с приложением.

Я не уверен, почему это не так, но мое решение - разместить файл где-то на машине и зарегистрировать его с помощью regsvr32 в командной строке, например:

regsvr32 c:\windows\system32\msrdo20.dll

В идеальном мире вы бы упаковали это с распространяемым.

Ответ 2

Эта загрузка исправила мою ошибку времени выполнения VB6 EXE и Access 2016 (с использованием ACEDAO.DLL) 429. Принял мне 2 длинных дня, чтобы решить проблему, потому что существует так много причин 429.

http://www.microsoft.com/en-ca/download/details.aspx?id=13255

Цитата из ссылки: "В этой загрузке будет установлен набор компонентов, которые могут использоваться для облегчения передачи данных между файлами Microsoft Office System 2010 и приложениями, отличными от Microsoft Office"

Ответ 3

У меня такая же ошибка, но я решил с помощью regsvr32.exe в C:\Windows\SysWOW64. Потому что мы используем систему x64. Поэтому, если ваш компьютер также является x64, ocx/dll должен также зарегистрировать версию regsvr32 x64

Ответ 4

Вы говорите, что это работает после установки VB6 IDE, поэтому проблема в том, что компоненты, которые вы пытаетесь использовать, зависят от установленной среды исполнения VB6.

Время выполнения VB6 по умолчанию не установлено в Windows.

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

Вот один установщик времени выполнения VB6 от Microsoft. Я не уверен, что это будет подходящая версия для ваших компонентов:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7b9ba261-7a9c-43e7-9117-f673077ffb3c