Здравствуйте, Lilya.
Вы писали 29 марта 2004 г., 9:17:55:
LV> Hello comp,
LV> Необходимо полностью удалить ключ реестра. Следующий код отрабатывает
LV> без ошибок, но результат сабжа=false. Подскажите, в чем ошибка
LV> function DeleteRegistryKeySh(RootKey: HKEY; RegKeyName: string):boolean;
LV> begin
LV> Registry.RootKey:=RootKey;
LV> Registry.OpenKey(RegKeyName, False);
LV> Result:=Registry.DeleteKey(RegKeyName);
LV> // Registry.DeleteValue(RegKeyName); также не удаляет значение ключа.
LV> Registry.CloseKey;
LV> end;
LV> begin
LV> ...
LV> DeleteRegistryKeySh(HKEY_CURRENT_USER, 'Software\MyProgram');
LV> ...
LV> end;
У меня все работает !!!!
Из твоего примера не ясно от кула ты берешь Registry ???
Это у тебя модуль или переменная. Если этим ты хочешь сказать, что что
модуль, то ты не права. Т.к. для работы с реестром так не делается.
Сначала надо в USES-е подключить этот модуль Registry.
Затем описать переменную типа ТRegistry, наприме MyReg : ТRegistry
Если эта переменная нужна только в одной функции, значит там ее и
описывай, если же ты планируешь работать с реестром в всей проге,
тогда надо глобально описывать.
Далее тебе надо ее один раз покритать, например при старте программы в
OnCreate. И не забыть ее удалить при закрытии программы или если она
тебе больше не нужна.
Вот рабочий код на удаление ключа относительно твоего примера.
И ОБСАЛЮТНО НЕ ВАЖНО, ЕСТЬ ЛИ У ЭТОТ КЛЮЧА ПОДКЛЮЧИ И/ИЛИ ПАРАМЕТРЫ.
Функция DeleteKey удаляет весь
указанный ключ со всем его содержимым. Кстати, при этом надо
учитывать права доступа к реестру и к твоим ключам, т.к. в NT-шке (NT
4.0/2000/XP/2003) устанавливается уровень доступа пользователей как ко
всему реестру, так и к отдельным его ключам.
function DeleteRegistryKeySh(RootKey: HKEY; RegKeyName: string):boolean;
var
Reg : TRegistry;
Res : boolean;
begin
Reg := TRegistry.Create;
Reg.RootKey := RootKey;
Res := Reg.DeleteKey('Software\Тут может буть "русский текст в
кавычках"\Naladka');
// Res := Reg.DeleteKey(RegKeyName);
Reg.Free;
end.
LV> begin
LV> ...
LV> DeleteRegistryKeySh(HKEY_CURRENT_USER, 'Software\MyProgram');
LV> ...
LV> end;
В результате в переменную Res будет записан результат выполнения
удаления, т.е. TRUE.
Удачи... :-)
--
С уважением,
Feniks mailto: feni***@b*****.ua
Номер выпуска : 2732
Возраст листа : 190 (дней)
Количество подписчиков : 382
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/114884
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru