AxAcroPDF - класс Vista64, ошибка не зарегистрирована

У нас есть приложение WinForms, написанное на C#, которое использует компонент AxAcroPDFLib.AxAcroPDF для загрузки и печати файла PDF. Работает без проблем в Windows XP. Я переместил свою среду разработки в Vista 64 bit, и теперь приложение не будет работать (в Vista 64), пока я не удалю компонент AxAcroPDF. Я получаю следующую ошибку при запуске приложения:

"System.Runtime.InteropServices.COMException: класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."

На форумах Adobe мне сообщили, что причина ошибки заключается в том, что у них нет 64-разрядной версии элемента управления AxAcroPDF ActiveX.

Есть ли способ обойти эту проблему? Например, могу ли я сам преобразовать 32-битный элемент управления ActiveX в 64-битный?

3 ответа

Решение

Вы не можете самостоятельно преобразовать элемент управления ActiveX Adobe в 64-битную версию, но вы можете принудительно запустить приложение в 32-битном режиме, установив целевой платформой значение x86.

Инструкции для вашей версии Visual Studio см. В разделе 1.44 " Проблемы при использовании Microsoft Visual Studio 2005".

Платформа.Net Framework 1.1 всегда предназначена для 32-битных процессоров, в то время как.Net Framework 2.0 и выше может ориентироваться на 32-битные или 64-битные в соответствии со свойством processorArchitecture манифеста программы, измененного параметром "Platform Target" в Visual Studio IDE. С опцией по умолчанию "Любой ЦП" код IL компилируется в соответствии с платформой, но, конечно, COM-вызов 32-битного компонента AxAcroPDF завершается неудачно, если платформа 64-битная. Просто перестройте EXE-файл, чтобы использовать только 32-битную платформу. Это прекрасно работает с эмулятором WOW64 в Vista 64 бит.

Используйте изоляцию DLL, работает с каждым 32-битным приложением COM+. Подробнее на: http://support.microsoft.com/kb/281335

С помощью этого решения вы можете изолировать 32-битное приложение COM+ в отдельный 32-битный процесс.

64-битные приложения ищут установленные объекты COM+ по адресу: HKLM\Software\Classes, но 32-битные приложения используют HKLM\Software\WOW6432\Classes

Другие вопросы по тегам