RegDeleteKey Value 和 RegDeleteValue 有什么区别?

What is the diff between RegDeleteKeyValue and RegDeleteValue?

我想知道 Win32API 中的 RegDeleteKeyValue 和 RegDeleteValue 有什么不同。

两者都RegDeleteValue and RegDeleteKeyValue remove a value from the Registry。区别之一是方便:应用程序和系统组件通常以子项组的形式构建注册表数据,每个子项包含一个值列表。 RegDeleteKeyValue 允许在从多个子键中删除值时重用父键句柄。使用 RegDeleteValue,您必须单独打开每个子项的句柄。

补充阅读:

RegDeleteValue() 是遗留函数,它已经存在了 22 年。 RegDeleteKeyValue() 是一个附加功能,首先在 Vista 上可用。主要版本 6,您必须将 _WIN32_WINNT 宏设置为 0x600 或更高版本才能使用它。不适用于 Windows XP、Server 2003 或更早版本。

版本 6 改变了几个与注册表相关的功能的行为,否则就没有我见过的出色的文档化基本原理。然而,这些变化 看起来 就像微软试图让它们更不容易被恶意软件利用一样。 RegDeleteValue() 适合,这是一个相当危险的功能。用缓冲区溢出攻击 hKey 参数,给它一个预定义的值,如 HKEY_CURRENT_USER,被攻击的程序可以立即摧毁用户的机器。我想,从来没有尝试过:)

所以您肯定要考虑 RegDeleteKeyValue()。