我正在开发一个 ActiveX,其中相同的代码库应该用于两个不同的 ActiveX,这意味着,我有一个由多个 DLL 构建的单一解决方案。当我为创建 ActiveX A 的 CAB 构建解决方案时,我将 DLL 类 ID 更改为特定的,当我为第二个 ActiveX 创建 CAB 时,我将类 ID 更改为其他内容。
我需要两个 ActiveX 才能在同一台机器上运行。基本上,它工作正常,除了在某些情况下我运行不同版本的 ActiveX(ActiveX A 来自比 ActiveX B 更旧的代码版本)存在不希望的行为。看起来 ActiveX 从 ActiveX B 加载了一些 DLL(来自不同的代码版本)。
抱歉,描述很长,但最后一个重要信息,因为两个 ActiveX 都来自相同的代码,所以我有相同的类名,它暴露给调用 ActiveX 的 javascript。在注册表中,除了以下项(NetworkInterface 是公开的类)之外,所有键都是完全分离的:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyActiveX.NetworkInterface\CLSID]
@="{31ED2205-F6AE-4133-AD30-60CA2783ADA6}"
安装 ActiveX 时,我看到此条目具有正确的类 ID,但在安装第二个 ActiveX 时,该密钥被第二个 ActiveX 覆盖。
是否有可能实现我想要实现的目标?有没有办法让同一个班级注册不同的班级ID?
谢谢。