Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

RegDeleteKey - как удалить ключ с внутренними ключами   Найти похожие ветки 

 
Prov   (2004-10-27 11:17) [0]

Уважаемые мастера. Вообщем, вышеуказанная йункция не удаляет ключ в реестре,если он хранит в себе вложенные ключи... В хелпе так и написано, что данная функциЯ не удалит ключ, если он содержит вложенные ключи. Подскажите, как быть ? Заранее благодарен. И еще, если можно, киньте кусочек кода, как пользоваться ф-ей RegQueryInfoKey(regQueryKey - точно не епомню названия). Премного благодарен.


 
Warlock ©   (2004-10-27 11:37) [1]

Все что могу подсказать - рекурсивная процедура
удаления с использованием RegEnumKey. Дальше думай сам, поскольку я такого не писал.


 
Prov   (2004-10-27 12:05) [2]

В том-то и дело.. Я пробовал пользоваться функцией RegEnumKey, но сам понять не могу, что и куда.. Пожалуйста, подскажите... :(( Еще раз спасибо.


 
clickmaker ©   (2004-10-27 12:21) [3]

на паскаль сам переводи

LONG RecursiveRegDeleteKey(HKEY hParentKey, LPSTR szKeyName)
{
DWORD dwIndex = 0L;
CHAR  szSubKeyName[256];
HKEY  hCurrentKey;
DWORD dwResult;

if((dwResult = RegOpenKey(hParentKey, szKeyName, &hCurrentKey)) ==
 ERROR_SUCCESS)
{
 while((dwResult = RegEnumKey(hCurrentKey, 0, szSubKeyName, 255)) ==
  ERROR_SUCCESS)
 {
  if((dwResult = RecursiveRegDeleteKey(hCurrentKey,
   szSubKeyName)) != ERROR_SUCCESS)
   break;
 }

 if((dwResult == ERROR_NO_MORE_ITEMS) || (dwResult == ERROR_BADKEY))
 {
  dwResult = RegDeleteKey(hParentKey, szKeyName);
 }
}

RegCloseKey(hCurrentKey);
return dwResult;
}


 
Дмитрий Ботвин   (2004-10-27 12:28) [4]

А вот так пробывал:

uses Registry;

//Удаление параметра ключа
procedure TForm1.DeleteRegKey(FullNameKey: String);
  var Reg : TRegistry;
  begin
     Reg := TRegistry.Create;
     Reg.Access:=KEY_ALL_ACCESS;
     if not(Reg.OpenKey(FullNameKey,false)) then
       begin
          Application.MessageBox("Не могу открыть выбранный
          ключ!","Открытие ключа",MB_OK+MB_ICONSTOP);
          exit;
       end;
     if not(Reg.DeleteKey(FullNameKey)) then
       Application.MessageBox("Не могу удалить выбранный ключ!",
                          "Удаление ключа",MB_OK+MB_ICONSTOP);
  end;

Здесь FullNameKey - полное имя ключа.


 
Prov   (2004-10-29 09:40) [5]

Clickmaker - спасибо.
Дмитрий - в том то и дело, что атк я умею... Мне надо на АПИ



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.036 c
14-1101020589
Sour
2004-11-21 10:03
2004.12.12
SMTP и POP3 серверы


14-1100943955
cyborg
2004-11-20 12:45
2004.12.12
Обхохотаться можно :)


14-1100831566
ИМХО
2004-11-19 05:32
2004.12.12
Роман с камнем, мелодия


1-1101634029
AdmeraL.
2004-11-28 12:27
2004.12.12
Dialogs


1-1101743328
Alek
2004-11-29 18:48
2004.12.12
С сишки на делфи ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский