3

我有一个 WPF 应用程序,它使用在 32 位机器上开发的 Flash10c.ocx。我不必在我的开发机器上注册 ocx,我只是安装了最新的闪存,添加了参考并开始编码。在 64 位系统上测试时,我得到了旧的“类未注册”,我认为这意味着我需要 regsvr ocx。是否可以将 32 位 ocx(我很确定它的 32 位,因为它位于开发系统上的 C:\Windows\System32\Macromed 中)复制到 64 位系统并注册它?

更新: regsvr32 /i flash10c.ocx 错误“加载了模块 flash10c.ocx 但对 DllRegisterServer 的调用失败,错误代码为 0x80004005”

更新 2:我已经放弃了,决定只在 32 位系统上运行 Flash。如果有人有更好的答案,我想听听,但我将当前的建议标记为已回答,以给予应有的努力。

4

2 回答 2

4

它不适合您的原因是您的 WPF 应用程序运行为 64 位。

.NET 应用程序能够以 32 位或 64 位运行;并且 CLR 正在将您的应用程序 JIT 到应用程序运行的任何架构上——在本例中为 64 位。

除非您现在希望 64 位应用程序加载 32 位 dll。这是不可能的。64 位进程只能加载 64 位 dll。32 位进程只能加载 32 位 dll。再多摆弄 COM 对象注册也不会改变这一点;这不是缺少注册表项的问题。

Adobe Flash 仅作为 32 位 dll 提供。Adobe 现在(希望永远不会)没有 64 位版本。

为了让您的 WPF .NET 应用程序加载 32 位 flash dll,它需要作为 32 位进程运行。在 Visual Studio 的构建配置中,有一种方法可以强制您的 .NET 应用程序仅以 .NET 应用程序为目标x86,而不是Any CPU.

CPU 目标的选择是:

  • 任何 CPU
  • x86
  • x64
  • 安腾

值得一提的是,Flash 也没有 Itanium 版本。

有关目标 CPU 的更多讨论,请参阅StackOverflow:Visual Studio “任何 CPU”目标

于 2010-09-09T14:26:03.317 回答
3

可能是 Flash 安装程序仅适用于 32 位操作系统。因此它没有在 64 位机器上正确安装。该错误意味着您将需要手动注册 ocx,但它是否会成功注册,这是一个完全不同的问题。

编辑 1:这是Adob​​e 支持 64 位系统的声明没有)(我假设您在 64 位机器上使用 64 位浏览器)

编辑 2 :关于 64 位 Windows 上的 Flash 的另一个论坛消息。

于 2009-09-12T15:26:59.500 回答