Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Удаление ключа реестра


Автор: 0x07L 21.6.2006, 18:46
Есть программа, сохраняющая настройки в реестре в ключе HKCU\Software\abc\xyz. В этом ключе есть несколько параметров и еще один ключик "array". В ключике "array" еще несколько параметров. Суть в том, что в ключике "array" количество параметров не постоянно и зависит от пользователя, поэтому в момент сохранения настроек нам приходится удалять предыдущие. Я, чтобы не перечислять все параметры, удаляю сразу ключик "array" и потом, соответственно, создаю новый и добавляю туда параметры. Программа сохраняет настройки в любой момент по требованию пользователя. Проблема в том, что когда я сохраняю настройки второй раз, функция RegDeleteKeyEx возвращает ERROR_ACCESS_DENIED. Все HKEY'и я закрываю, так что это не может быть связано с тем, что ключик занят. RegEdit же удаляет этот ключик всегда без ошибок. В чем дело?

Добавлено @ 18:48 
Удалять по одиночке параметры в ключике "array" я не пытался (руки пока не дошли). 

Автор: 0x07L 21.6.2006, 19:22
 smile Очень важное наблюдение. Если программу запустить, сохранить настройки (в первый раз, когда их в реестре еще нет), выйти из программы, опять ее запустить и попробовать снова сохранить настройки, то вылезает та же ошибка. То есть у моей программы получается сохранять настройки ровно 1 раз  smile . Даже когда она запускается/завершается. 

Автор: 0x07L 21.6.2006, 22:18
Удалять по очереди параметры тоже не получается. Тот же ERROR_ACCESS_DENIED. Только что пробовал.
 

Автор: 0x07L 21.6.2006, 23:21
Да...  Оказывается, я в одном месте просто перепутал функции RegCreateKey и RegCreateValue  smile , а RegDeleteKey отказывается удалять ключи  с вложенными ключами... Извините за беспокойство. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)