Вопрос по registry, enumeration, c++ – Удаление значений ключа реестра

0

В 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);
 }

Ваш Ответ

1   ответ
2

Ваш код не работает. Когда вы удаляете индекс 0, следующий элемент становится индексом 0, и вы не удаляете его.

Так что да, это относится к удалению значений ключей.

Похожие вопросы