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()。
我想知道 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()。