RegDeleteKeyValue和RegDeleteValue之间的区别是什么?

时间:2015-02-21 10:07:22

标签: winapi

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

2 个答案:

答案 0 :(得分:4)

RegDeleteValueRegDeleteKeyValue都会从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()。