Приложение VB6 не будет работать на Server 2008 после перекомпиляции - PullRequest
4 голосов
/ 29 марта 2011

Я пытаюсь переместить веб-серверы. Наше приложение (будьте добры) было написано еще в 1998 году (я думаю) в VB6. У меня это работает на нашем новом сервере (Windows Server 2008 R2 64 бит). Однако, когда я беру исходный код на своем компьютере (64-разрядная версия Windows 7) и передаю exe-файл на сервер, приложение взрывается при попытке подключиться к базе данных с этой ошибкой: «Ошибка 430 (класс не поддерживает Автоматизация или не поддерживает ожидаемый интерфейс) "

Проект ссылается на объекты данных Microsoft Activex 2.8 Библиотека. Строка с ошибками

Set conn = New adodb.Connection

Итак, на самом деле он не пытается подключиться к базе данных, а просто взрывается при попытке создать объект.

Кто-нибудь имеет опыт работы с такого рода ошибками? Или какие-либо предложения для меня? У Google было несколько возможностей, но ни одна из них не удалась. Большинство из них были связаны с Common Controls и использованием «Project Compatibility» - но мое приложение работает с «Unattended Execution», и поэтому я не могу выбрать это (оно полностью отключено в свойствах проекта).

1 Ответ

4 голосов
/ 29 марта 2011

Это серьезное изменение в MDAC, которое Microsoft представила в SP1. Проверьте это Тема форума MSDN . У этого есть несколько предложений для обходных путей. На данный момент нет исправления от Microsoft.

Я столкнулся с этим на 32-битной Windows 7 и в итоге откатил SP1.

Одно из предложений - заменить обновленный (неработающий) dll mdac на обновленный (не обслуживаемый) компьютер:

  1. Откройте Regedit и найдите ключ HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C}

  2. Щелкните правой кнопкой мыши, Разрешения, Дополнительно, Владелец, Смените владельца на Администраторов, Нажмите ОК, ОК

  3. Пробег C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12 -u "%CommonProgramFiles(x86)%\system\ado\msado28.tlb"

  4. Скопируйте msado28.tlb из Win7 RTM / Win2008R2 RTM на локальный компьютер, запишите папку для следующего шага.

  5. Выполнить C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12 "{path}\msado28.tlb"

Эти шаги предназначены для 64-битных окон. Должно быть одинаковым для 32-битных с корректировкой путей.

...