Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top