是否有类似RegDeleteTree
的函数来删除特定注册表子项下的所有值?我不想删除 key ,只是删除它的值。
如果没有,我该怎么做?
谢谢!
最佳答案
唯一的方法是使用 RegEnumValue()
枚举值并使用 RegDeleteValue()
单独删除它们。
或者如果 key 没有任何子 key ,只需递归删除整个 key ,然后重新创建父 key 。
编辑:这是一个基本例程,用于说明如何枚举和删除键中的值(它只有最少的错误检查)。
DWORD dwNumValues, dwValueNameLen;
if (RegQueryInfoKey(hKey, 0, 0, 0, 0, 0, 0,
&dwNumValues, &dwValueNameLen, 0, 0, 0) == ERROR_SUCCESS)
{
TCHAR* tchValName = new TCHAR[dwValueNameLen + 1];
for (int i = dwNumValues - 1; i >= 0; --i)
{
DWORD dwLen = dwValueNameLen + 1;
if (RegEnumValue(hKey, i, tchValName, &dwLen, 0, 0, 0, 0) == ERROR_SUCCESS)
RegDeleteValue(hKey, tchValName);
}
delete[] tchValName;
}
关于c++ - 删除注册表项下的所有值而不删除子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19255066/