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

64位上的PDFCreator和VB6:ActiveX组件无法创建对象,vb6,activex,windows-server-2008-r2,Vb6,Activex,Windows Server 2008 R2,我正在使用VB6创建PDF。我的VB6开发虚拟机是Windows XP 32位。在该系统上,PDF生成既可以从桌面应用程序生成,也可以通过VB web类运行时从ASP生成 当我创建一个exe在Windows 7或Windows Server 2008 R2上运行或在web类运行时使用它时,我得到: Run-time error '429': ActiveX component can't create object 这是在使用早期绑定时发生的。我将项目引用添加到C:\Program Files

我正在使用VB6创建PDF。我的VB6开发虚拟机是Windows XP 32位。在该系统上,PDF生成既可以从桌面应用程序生成,也可以通过VB web类运行时从ASP生成

当我创建一个exe在Windows 7或Windows Server 2008 R2上运行或在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。

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

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


请参见

,因为这是一个VB6问题,所以不需要担心任何64位进程

这个库似乎比任何其他库都更有可能没有被正确注册。我没有使用它,因为我不知道它的设置是否正常工作。我知道下载本身并没有在图标上显示UAC屏蔽,这本身就是可疑的。据我所知,安装程序生成了一个错误的regsvr32.exe运行

但是,在将库裸体复制到这些64位Win7/Server 2008系统之后,更可能是手动错误注册了库

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

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


这些线索,包括对古代技术的绞尽脑汁,真的变得陈旧了。埋怨工具的是一个可怜的工人。将来为什么不雇佣一个有经验的程序员来处理这样的任务呢?

我在用VB6编写的会计软件中使用PDFCreator。几年前,我注意到在PDFCreator的制造商进行了某种更新之后,我的软件停止正常工作。在我重新安装旧版本后,问题停止了,当他们发布了另一个新的更新时,问题又出现了,因此我让我的客户冻结在有效的版本上。我不知道那是什么版本,但我可以查看我自己的网站,因为如果有帮助的话,我可以为我的客户下载,但它可能已经有很多年了