registry - 有没有办法验证 Windows 注册表项是否易失(REG_OPTION_VOLATILE)?

标签 registry volatile

在 Windows 注册表中, key 可以创建为 volatile 的 - 这意味着 volatile key 在 PC 重新启动后将无法继续存在。重新启动后,在注册表中将找不到此类 key 的痕迹。 这是由 API RegCreateKeyEx 的选项 REG_OPTION_VOLATILE 指定的。

我需要验证某个 Windows 注册表项是否易失(使用 REG_OPTION_VOLATILE 创建)。

例如, key 可能位于 (HKLM\Software\MyCompany\MyProgram\KeyToBeChecked) 下。

似乎没有直接的 WIN API 允许进行此类检查。

有谁知道如何检查吗?

最佳答案

一种方法是尝试使用 RegCreateKeyEx 在正在验证的 key 下创建一个非 volatile 子项。如果 key 确实是 volatile 的,那么它将失败并出现错误ERROR_CHILD_MUST_BE_VOLATILE。尝试在 volatile 键中设置值时,甚至 ShSetValue 也会返回 ERROR_CHILD_MUST_BE_VOLATILE

关于registry - 有没有办法验证 Windows 注册表项是否易失(REG_OPTION_VOLATILE)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432977/

相关文章:

c# - 如何将文件类型与图标相关联?

c - volatile 指针指向非 volatile 数据

c - 演示在信号处理过程中不使用volatile关键字时编译器的优化效果?

c++ - 带有 volatile 的多线程代码明显不安全行为的真实世界示例

c# - 文件类型图标未在 Visual Studio 中更新

c# - 从 32 位程序启动 64 位版本的 regedit 以创建 sql 别名

c++ - 为什么 volatile 会产生未定义的行为

c - 使用 volatile 字符串作为 printf() 的格式字符串

registry - 为所有桌面快捷方式(Windows 资源管理器)的自定义右键单击上下文菜单项设置图标

c# - clickonce 从哪里从 regedit 获取 DisplayName 中使用的值?