在WIN7下防止硬重置删除注册表更改?

use*_*767 8 windows delphi registry winapi

我正在通过我的软件编辑Windows注册表,例如它取代了Shell(Kiosk应用程序).

现在我注意到在Win7下如果发生硬重置(重置按钮或4秒电源按钮),所有注册表更改都将丢失.

在WinXP下,它工作正常,即使在硬重置之后,我所做的更改仍然存在.

在Win7下编辑注册表后我是否需要做一些特殊的事情,或者这甚至可能是内置的Win7安全功能?

对我来说,看起来注册表更改没有最终确定,只是保存在内存中,直到软复位发生,这可能是真的吗?如果是这样,我可以以某种方式强制保存吗?

Ben*_*igt 12

听起来你想要这个RegFlushKey功能.

RegFlushKey仅当包含指定键的配置单元的所有数据都已写入磁盘上的注册表存储时,该函数才会返回.

RegFlushKey函数会写出自上次延迟刷新或系统启动以来已修改的配置单元中其他键的数据.

  • 本:+1.@user,如果你正在使用Delphi的`TRegistry`,在写你的密钥之前将`TRegistry.LazyWrite`设置为false.在关闭密钥之前,它会为您执行`RegFlushKey`. (8认同)
  • @ user990767:啊,我以为你知道如何调用winapi函数,因为你的问题有这个标签.但现在我看到其他人添加了它.无论如何,Ken在上面的评论中给了你Delphi友好的答案. (3认同)