我们有一个旧版 VB6 应用程序,它在启动时通过下载最新文件并注册 COM 组件来更新自身。这适用于本地 (regsvr32) ActiveX COM 组件和远程 (clireg32) 在另一台计算机上的 COM+ 中注册的 ActiveX COM 组件。
出于安全原因,新要求阻止我们写入 HKEY_LOCAL_MACHINE (HKLM),这显然是在调用 regsvr32 和 clireg32 时默认发生的情况。
我们想出了一种使用RegOverridePredefKey Windows API 方法在 HKEY_CURRENT_USER\Software\Classes (HKCU) 下注册本地 COM 组件的方法。这通过将插入到注册表中的插入重定向到 HKCU 位置来实现。然后当 COM 组件被实例化时,windows 首先查找 HKCU,然后再查找 HKLM 中的组件信息。这取代了 regsvr32 正在做的事情。
我们此时遇到的问题是,当我们尝试使用clireg32注册VBR/TLB时,这个注册过程也将注册密钥添加到HKEY_LOACL_MACHINE。
有没有办法将 clireg32.exe 重定向到注册组件是 HKEY_CURRENT_USER?是否有任何其他方法可以让我们在安全访问受限的客户端机器上注册这些 COM+ 组件?
我们目前唯一的解决方案是手动将注册信息写入注册表,但这并不理想,而且会成为一个维护问题。