如何防止Windows缓存Com Class信息?

cco*_*xtn 25 windows com registry caching windows-7

Windows 7正在缓存一些COM类信息.较旧的操作系统没有这样做.操作系统查找该HKCU\Software\Classes\CLSID\{GUID}\LocalServer32值后,它会缓存该值,并且不再查找该值.

当我们更新软件时,我们将新更新放在不同的目录中,然后更新该HKCU\Software\Classes\CLSID\{GUID}\LocalServer32值以反映新路径.下次运行软件时,如果在较旧的Windows操作系统下运行,它将使用最新文件.但是,在Windows 7上,它将继续使用旧文件,直到重新启动操作系统.

我运行了进程监视器,发现在Windows 7下,它在第一次读取后再也没有再次读取注册表项.在较旧的操作系统上,它每次都会读取该密钥.

我的问题是:每次创建一个新的proc COM对象时,有没有办法强制Windows 7重新读取HKCU配置单元中的LocalServer32信息?

Mat*_*hew 1

由于这是 Google 对于这个狭隘问题的最高结果,因此我认为添加我对这个问题的故障排除结果是很有价值的。

我在 SO 上找到了这个响应:C#:如何更改 Windows 注册表并立即生效

并从该答案链接解决方案:Registry Watcher C#

这两个似乎都是管理更改密钥而不强制重新启动的可行选择。对于我们(如OP)来说,这是在安装更新时。对于我们(可能与 OP 不同)来说,这种情况并不常见,我们认为需要重新启动的简单解决方案胜过实施和测试所描述的修复的工作:无论如何,Windows 用户在安装软件时都期望这个过程。