gpt4 book ai didi

vb6 - 无需访问 HKEY_CLASSES_ROOT 的远程 DLL 注册

转载 作者:行者123 更新时间:2023-12-01 13:06:07 25 4
gpt4 key购买 nike

我们有一个遗留的 VB6 应用程序,它在启动时通过下载最新文件并注册 COM 组件来更新自身。这适用于在另一台计算机上的 COM+ 中注册的本地 (regsvr32) ActiveX COM 组件和远程 (clireg32) ActiveX COM 组件。

出于安全原因,新要求阻止我们写入 HKEY_LOCAL_MACHINE (HKLM),这显然是调用 regsvr32 和 clireg32 时默认发生的情况。

我们想出了一种方法,可以使用 RegOverridePredefKey 在 HKEY_CURRENT_USER\Software\Classes (HKCU) 下注册本地 COM 组件Windows API 方法。这通过将插入到注册表中的内容重定向到 HKCU 位置来实现。然后当COM组件被实例化时,windows首先查找HKCU,然后再到HKLM中查找组件信息。这取代了 regsvr32 正在做的事情。

我们此时遇到的问题是当我们尝试使用 clireg32 注册 VBR/TLB 时,此注册过程还会将注册 key 添加到 HKEY_LOACL_MACHINE。

有没有办法将 clireg32.exe 重定向到注册组件是 HKEY_CURRENT_USER?是否有任何其他方法可以让我们在具有有限安全访问权限的客户端计算机上注册这些 COM+ 组件?

我们目前唯一的解决方案是手动将注册信息写入注册表,但这并不理想,而且会成为维护问题。

最佳答案

我在这里看到的答案很少。使用 12 年历史的技术需要安装更新的应用程序的概念很奇怪,并且在现代机器上没有得到很好的支持。我认为,像免注册 COM 这样的常见解决方案与 COM+ 不兼容。错误修复样式更新需要重新注册组件也很奇怪。您是否已确认这确实是必需的?

关于该主题,您实际上多久更改一次部署中的 GUID?当 key 不经常更改时,您自己负责注册而不是将其留给组件本身应该是可行的。可以像使用 SysInternals 的 ProcMon 实用程序捕获注册一样简单,编写一个设置 HKCU key 的 .reg 文件。

除此之外,您确实需要获得不可写注册表项的权利。如果您不能从客户那里得到同意,请考虑要求安装更新的计划任务。如果系统管理员允许,他们可以获得访问权限。

关于vb6 - 无需访问 HKEY_CLASSES_ROOT 的远程 DLL 注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3056363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com