带有OCX加载的Windows 7 64位问题

时间:2011-07-14 19:22:50

标签: windows-7-x64 ocx

我有一个使用 Any CPU 的配置编译的.NET 3.5应用程序。该应用程序引用带有互操作程序集的OCX文件。

当应用程序安装在Windows 7 32位上时,一切正常。当在Windows 7 64位上安装相同的应用程序时,我们收到错误:

  

检索具有CLSID {CCB90182-B81E-11D2-AB74-0040054C3719}的组件的COM类工厂因以下错误而失败:80040154

使用Process Monitor中的SysInternals我可以看到,在32位操作系统上,系统正在尝试加载以下注册表项。

HKCR\Wow6432node\CLSID\{above CLSID}\InprocServer or
HKCR\Wow6432node\CLSID\{above CLSID}\InprocServer32

可用,这就是应用程序的工作原理。

在64位版本上,Windows正在寻找

HKCR\Wow6432node\CLSID\{above CLSID}\InprocHandler or
HKCR\Wow6432node\CLSID\{above CLSID}\InprocHandler32 

它们都不存在。

如何在64位Windows 7上运行?

2 个答案:

答案 0 :(得分:0)

因为它是一个InprocServer,它在调用进程上下文中运行。如果调用进程是在x64平台上运行的AnyCPU,则它只能运行x64 COM组件。

因此,您需要获取x64版本的组件或编译x86平台的应用程序。

如果这个COM组件是本地或远程服务器也可以工作......

答案 1 :(得分:0)

有时可以帮助下一步行动:

使用

创建filexx.bat
@echo un-register
regsvr32.exe completePathOfOcxOrDllFile -u
@echo register
regsvr32.exe completePathOfOcxOrDllFile -u
@pause
@exit

当然,以管理员身份运行bat文件(右键单击文件,然后单击以管理员身份运行)。