【问题标题】:How can I use HTMLHelpCtrl.ocx ActiveX control on a x64 platform如何在 x64 平台上使用 HTMLHelpCtrl.ocx ActiveX 控件
【发布时间】:2015-04-16 14:30:19
【问题描述】:

实际上,我们正在运行带有 HTMLHelpCtrl.ocx ActiveX 控件(所有模块 x86)的 x86 Windows 桌面 C++ Qt 应用程序,以便调用应用程序的 .chm HtmlHelp。 现在我们想将我们的应用程序移植到 x64。不幸的是,不能直接使用当前的 x86 HTMLHelpCtrl.ocx。是否有 64 位版本的 HMTLHelpCtrl.ocx 可用?或者需要什么才能在 x64 中使用 x86 ActiveX 控件?

我们已经尝试过这样做:Using a 32-bit COM Object from a 64-bit Application。但这不是一个选项,因为我们需要在没有管理权限的情况下使其工作。因此我们无法更改文章中提到的注册表值。

【问题讨论】:

  • COM ocx(或 dll)必须注册。你需要找到一种方法来注册它。
  • 没有管理权限是不可能注册的

标签: c++ qt chm html-help


【解决方案1】:

解决方案相当简单:您需要在安装程序中执行the steps that you refer to。这就是您将拥有所需管理权限的地方,也是处理此类事情的地方。

如果不能,则需要将应用程序拆分为两个进程:一个是 32 位,另一个是 64 位。在32位进程中托管32位对象,在64位进程中运行需要大内存的东西。

【讨论】:

  • 要求是能够在没有管理权限的情况下运行(并安装)应用程序。它是按用户安装的。在这种情况下,我们可以访问注册表中的一些分支(例如 HKEY_CURRENT_USER 及以下),但不能访问 HKEY_CLASSES_ROOT 和 HKEY_LOCAL_MACHINE
  • @MartinPakula 该要求与您尝试做的事情不一致。必须给出一些东西:要么允许管理员安装,要么不要使用来自 64 位应用程序的 32 位 COM 对象。这并不意味着你不能做你想做的事。查看编辑。
  • @KubaOber 是否有可能创建一个 64 位 COM 对象,例如在这种特殊情况下的 ocx?
猜你喜欢
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 2021-10-19
  • 2011-07-31
  • 1970-01-01
  • 2013-03-03
相关资源
最近更新 更多