2013-10-08 46 views

回答

2

唯一的方法是枚举值为RegEnumValue(),并使用RegDeleteValue()单独删除它们。

或者如果密钥没有任何子密钥,只需递归删除整个密钥,然后重新创建父密钥。

编辑:这是一个基本的例程来说明如何枚举和删除键中的值(它只有最小的错误检查)。

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; 
} 
+0

非常感谢Jonathan。我是否认为我必须做一个For或者While来加入这两个功能。我对吗? –

+0

我已经添加了一些如何枚举和删除值的示例代码。 –

+0

太棒了!非常感谢! –