我想知道Win32API中RegDeleteKeyValue和RegDeleteValue之间有什么不同。
答案 0 :(得分:4)
RegDeleteValue
和RegDeleteKeyValue
都会从Registry中删除一个值。方便之处在于:应用程序和系统组件通常在子组组中构建注册表数据,每个子组都包含一个值列表。 RegDeleteKeyValue
允许在从多个子项中删除值时重用父键句柄。使用RegDeleteValue
,您必须单独打开每个子项的句柄。
补充阅读:
答案 1 :(得分:4)
RegDeleteValue()是遗留功能,它已经存在了22年。 RegDeleteKeyValue()是一个添加,首先在Vista上提供。主要版本6,您必须将_WIN32_WINNT宏设置为0x600或更高才能使用它。无法在Windows XP,Server 2003或更早版本上运行。
版本6改变了几个注册表相关功能的行为,否则没有我见过的出色的记录理由。然而,像Microsoft一样的外观试图使它们不易被恶意软件利用。 RegDeleteValue()适合,这是一个非常危险的功能。使用缓冲区溢出来查找hKey
参数,给它一个预定义的值,如HKEY_CURRENT_USER和受攻击的程序,可以立即销毁用户的计算机。我想,从未尝试过:)
所以你肯定要考虑RegDeleteKeyValue()。