Ошибка Класса AxAcroPDF - Vista64 Не Зарегистрирована

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

система".Во время выполнения.InteropServices.Исключение comexception: Класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."

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

есть ли способ обойти эту проблему? Например, могу ли я сам преобразовать 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 манифеста программы, измененного параметром "цель платформы" среды IDE Visual Studio. С параметром по умолчанию "любой процессор" код IL компилируется в соответствии с платформой, но, конечно, COM-вызов компонента AxAcroPDF 32 bits завершается неудачей, если платформа 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