我有一个使用在32位计算机上开发的Flash10c.ocx的WPF应用程序。我没有在我的开发机上注册ocx,我刚安装了最新的flash,添加了一个引用并开始编码。当我在64位系统上进行测试时,我得到的是“Class not registered”,我认为这意味着我需要注册ocx。是否可以将32位ocx(我很确定它的32位位于开发系统上的C:\ Windows \ System32 \ Macromed中)复制到64位系统并注册它?
更新:regsvr32 / i flash10c.ocx错误输出“模块flash10c.ocx las加载,但对DllRegisterServer的调用失败,错误代码为0x80004005”
更新2:我放弃了这一点,决定只在32位系统上运行Flash。如果有人有更好的答案,我想听听,但我正在回答当前的建议,以便给予应有的信任。
答案 0 :(得分:4)
它不适合您的原因是您的WPF应用程序以64位运行。
.NET应用程序能够以32位或64位运行;并且CLR将您的应用程序与应用程序运行的任何体系结构相匹配 - 在本例中为64位。
除非您现在希望64位应用程序加载32位dll。这是不可能的。 64位进程只能加载64位dll。 32位进程只能加载32位dll。摆弄COM对象注册的任何数量都不会改变这一点;这不是缺少注册表项的问题。
Adobe Flash仅作为32位dll出现。 Adobe现在(并且希望永远不会)拥有64位版本。
为了让您的WPF .NET应用程序加载32位闪存dll,它需要以32位进程运行。在Visual Studio的构建配置中,有一种方法可以强制.NET应用程序仅定位x86
,而不是Any CPU
。
CPU目标的选择是:
Flash,它的价值,也没有Itanium版本。
有关目标cpus的更多讨论,请参阅StackOverflow: Visual Studio “Any CPU” target。
答案 1 :(得分:3)
可能是Flash安装程序仅适用于32位操作系统。因此它无法在64位计算机上正确安装。该错误意味着您需要手动注册ocx,但它会成功注册,这是一个完全不同的问题。
编辑1 :这里是Adobe's statement of support for 64-bit systems(没有)(我假设您在64位计算机上使用64位浏览器)