64位上的PDFCreator和VB6:ActiveX组件无法创建对象

问题描述 投票:0回答:2

我正在使用PDFCreator在VB6中创建PDF。我的VB6开发VM是Windows XP 32位。在该系统上,PDF生成可以从桌面应用程序和ASP(通过VB Web类运行时)进行。

当我创建一个在Windows 7或Windows Server 2008 R2上运行的exe或在Web类运行时使用它时,我得到:

Run-time error '429':
ActiveX component can't create object

这是使用早期绑定时。我添加项目引用“C:\ Program Files \ PDFCreator \ PDFCreator.exe”然后在我的代码中我做:

Public WithEvents mPDFCreator As PDFCreator.clsPDFCreator
Set mPDFCreator = New PDFCreator.clsPDFCreator

如果我不使用项目引用并使用后期绑定,那么它可以在桌面应用程序上运行,但仍然不在Web类运行时中。后期绑定是这样完成的:

Set mPDFCreator = CreateObject("PDFCreator.clsPDFCreator")

我想使用早期绑定,以便我可以使用事件,而且我需要它在ASP / Web类运行时中工作。

我意识到我在这里处理古老的技术,在现代的64位Windows和IIS上运行这些东西时,我应该能够缓和期望。如果将这个遗留应用程序移植到.NET是一个选项,我会的。

在IIS上,我在应用程序池上设置了“启用32位应用程序”设置。我也尝试以管理员身份运行它来排除安全问题。

我已经完成了我知道如何调试这一切,但我很难过。我怀疑它与PDFCreator是一个32位应用程序和COM注册有关。我也试过用SYSWOW64运行regsvr32但是无法注册PDFCreator.exe。

vb6 activex windows-server-2008-r2
2个回答
0
投票

Windows 64位体系结构不允许将32位dll加载到64位进程中。

但是您可以修改vb项目的配置,将其从进程内的DLL组件转换为进程外的exe COM服务器。这将允许您从64位进程实例化32位组件。

Process Interoperability


0
投票

由于这是一个VB6问题,因此不必担心任何64位进程。

这个库似乎没有被正确注册,这似乎比其他任何东西更可能。我没有使用它,因为我不知道它的设置是否正常。我知道下载本身不会在其图标上显示UAC Shield,本身就是可疑的。据我所知,安装程序会产生错误的regsvr32.exe。

但是,在将它裸露到这些64位Win7 / Server 2008系统之后,您似乎更有可能手动错误注册了库。

在任何情况下,重复你描述的所有症状,我猜它已被注册为32位ActiveX库,但在注册表的每用户虚拟化部分注册为您注册时注册的用户它。

这可能是一个麻烦清理后。但是您应该,然后确保再次使用高程手动运行原始设置。

这些线索包括对“古老技术”的扯皮,真的变老了。这是一个谴责他的工具的穷人。在未来为什么不聘请有经验的程序员来处理这样的任务呢?

© www.soinside.com 2019 - 2024. All rights reserved.