"Refreshing" 注册表项更改后的窗口注册表
"Refreshing" windows registry after key changed
>Case:
- 注册表项的 DWORD 值为 0
- 将注册表项值更改为 1
- 再次读取该值:它仍然是 0
必须重新启动程序才能读取新值。
我在谷歌上搜索并查看CRegKey类,但我没有看到任何可以回答我的问题。我还知道资源管理器.exe例如,在进行注册表更改时必须重新启动才能生效。
有没有办法在运行时获取注册表的新"副本"?
编辑:事实证明我上面的情况是完全不正确的。这是其他地方的一个错误,阻止我读取新值。
> 这是一个函数:RegFlushKey()
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724867%28v=vs.85%29.aspx
也许这就是您要找的,但是此函数应由修改注册表的代码调用
以下为备注摘录:
调用RegFlushKey是一项昂贵的操作,它显着 影响系统范围的性能,因为它会消耗磁盘带宽和 阻止注册表配置单元中所有进程对所有键的修改 在刷新操作完成之前,正在刷新。RegFlushKey 应仅在应用程序必须保证时显式调用 注册表更改在之后立即保存到磁盘 修改。对密钥所做的所有修改对其他人可见 进程,无需将它们刷新到磁盘。
编辑:哎呀,误读那里的问题的方式,尽管上述内容与您提到的资源管理器等情况有关。
如果程序正在重新读取打开的 HKEY ,则可能存在缓存问题,阻止它看到其他程序的更改。"规范"注册表是否在 RAM 中或刷新到磁盘应该无关紧要 - 这更像是一个持久性问题。
相关文章:
- 有没有任务栏API可以立即应用注册表更改
- 检查注册表项是否链接到(或副本)另一个注册表项
- 禁用地址共享注册表不起作用
- 如何从注册表项中提取配置单元和注册表名称
- 注册表正在设置 1 个字符
- 清理"QSettings"注册表项的最佳方法(Windows上的Qt 5)
- 在 c++ 中编辑注册表项
- 某些进程的注册表限制
- 在编译时生成某种子类/类型注册表?
- 如何测试注册表项是否存在?
- 注册表-获取值(而不是键)上次更改的时间和键创建日期
- 从注册表中检索已注销用户的 sid
- 如何正确检查 c++ 是否存在注册表项?
- 如何在不使用任何数据库的情况下制作动态注册表单?
- 强制资源管理器重新加载注册表值
- 在 64 位和 32 位窗口中读取注册表
- 尝试使用窗口注册表中的路径和 DeleteFile() 方法删除.exe文件
- 从Windows注册表中保存的工作区检索窗口放置
- 通过注册表更改鼠标设置后,刷新窗口
- "Refreshing" 注册表项更改后的窗口注册表