AxAcroPDF - Vista64类未注册错误

时间:2008-09-15 21:28:18

标签: 64-bit activex adobe axacropdf

我们有一个用C#编写的WinForms应用程序,它使用AxAcroPDFLib.AxAcroPDF组件来加载和打印PDF文件。在Windows XP中一直没有任何问题。我已将我的开发环境移至Vista 64位,现在应用程序将无法运行(在Vista 64上),除非我删除了AxAcroPDF组件。应用程序运行时出现以下错误:

“System.Runtime.InteropServices.COMException: 未注册的类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。“

我在Adobe论坛上被告知错误的原因是他们没有64位版本的AxAcroPDF ActiveX控件。

有没有解决这个问题的方法?例如,我可以自己将32位ActiveX控件转换为64位控件吗?

3 个答案:

答案 0 :(得分:14)

您无法自己将Adobe的ActiveX控件转换为64位,但您可以通过将平台目标设置为x86来强制您的应用程序以32位模式运行。

有关您的Visual Studio版本的说明,请参阅Issues When Using Microsoft Visual Studio 2005

的第1.44节

答案 1 :(得分:6)

.Net framework 1.1始终以32位CPU为目标,而.Net framework 2.0及更高版本可以根据Visual Studio IDE的“Platform Target”选项更改的程序清单的processorArchitecture属性,以32位或64位为目标。 。 使用默认选项“Any CPU”,IL代码根据平台进行编译,但是当平台为64位时,对AxAcroPDF 32位组件的COM调用当然会失败。 只需将EXE重建为目标32位平台即可。这适用于Vista 64位的WOW64仿真器。

答案 2 :(得分:0)

使用DLL隔离,适用于每个32位COM +应用程序。更多信息请访问: http://support.microsoft.com/kb/281335

使用此解决方案,您可以将32位COM +应用程序隔离到单独的32位进程中。

64位应用程序搜索已安装的COM +对象:HKLM \ Software \ Classes,但32位应用程序使用HKLM \ Software \ WOW6432 \ Classes