我想知道RegDeleteKeyValue和RegDeleteValue在Win32API中的区别。
RegDeleteValue
和 RegDeleteKeyValue
均可从 注册表 中删除一个值。两者的区别在于方便性:应用程序和系统组件通常会将注册表数据结构化为多个子键组,每个子键包含一个值列表。而 RegDeleteKeyValue
允许在删除多个子键中的值时重复使用父键句柄。而 RegDeleteValue
则需要单独打开每个子键的句柄。
更多阅读:
RegDeleteValue()是传统函数,已经存在了22年。 RegDeleteKeyValue()是一个附加项,首次在Vista上可用。主要版本6,您必须将_WIN32_WINNT宏设置为0x600或更高才能使用它。无法在Windows XP、Server 2003或更早版本上工作。
版本6改变了几个与注册表相关的功能的行为,否则没有我见过的出色文档解释。但是这些更改看起来像微软试图通过恶意软件使它们更难利用。 RegDeleteValue()很适合,它是相当危险的函数。通过缓冲区溢出攻击hKey参数,给它预定义值之一,如HKEY_CURRENT_USER,攻击程序可以立即摧毁用户的机器。我认为,从未尝试过 :)
因此,您绝对需要考虑RegDeleteKeyValue()。