【问题标题】:Windows 7 64-bit issue with OCX loadingWindows 7 64 位 OCX 加载问题
【发布时间】:2011-10-05 15:24:17
【问题描述】:

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

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

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

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

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

哪些是可用的,这就是应用程序工作的原因。

Windows 正在寻找的 64 位版本

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

它们都不存在。

如何让它在 Windows 7 64 位上运行?

【问题讨论】:

    标签: windows-7-x64 ocx


    【解决方案1】:

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

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

    如果这个 COM 组件是一个本地或远程服务器也能正常工作...

    【讨论】:

      【解决方案2】:

      有时可以帮助接下来的行动:

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

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

      【讨论】:

        猜你喜欢
        • 2013-06-06
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-06
        • 2012-04-18
        相关资源
        最近更新 更多