В MSDN говорится, что RegEnumValue не следует использовать при вызове функции, которая изменяет перечисляемые ключи реестра.
Так это же относится и к удалению значений ключа реестра?
Как этот кодделает:
if (RegOpenKeyEx(m_hkey,m_path.c_str(),0,KEY_ALL_ACCESS,&key) == ERROR_SUCCESS)
{
bool error=false;
idx=0;
while (RegEnumValue(key,idx,name,&namesize,NULL,NULL,NULL,NULL) == ERROR_SUCCESS && !error)
{
error=(RegDeleteValue(key,name)!=ERROR_SUCCESS);
idx++;
}
RegCloseKey(key);
}