Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

RegKeyDelete & SubKeys   Найти похожие ветки 

 
_Simon_   (2005-11-30 19:13) [0]


В KOL нет аналога функции:
function DeleteKey(const Key: String): Boolean;

Финкция из KOL


//[function RegKeyDelete]
function RegKeyDelete( Key: HKey; const SubKey: String ): Boolean;
begin
 Result := FALSE;
 if Key <> 0 then
   Result := RegDeleteKey( Key, PChar( SubKey ) ) = ERROR_SUCCESS;
end;


использует RegDeleteKey которая:
Windows NT: The RegDeleteKey function deletes the specified key.
This function cannot delete a key that has subkeys.

В Win32 SDK Delphi 7 ничего другого не нашел.
Написал следующее:


function RegKeyDeleteFull(Key: HKey; const SubKey: PChar): Boolean;
var
 List: PStrList;
 NewKey: HKey;
 i, count: Longint;
begin
 if Key <> 0 then
   begin
     NewKey:=RegAPIOpen(Key, SubKey, False);
     List:=NewStrList;
     RegKeyGetSubKeys(NewKey, List);
     count:=List.Count;
     if count = 0 then
       Result := RegDeleteKey(Key, SubKey) = ERROR_SUCCESS
     else {if count>0}
       begin
         for i:=0 to count-1 do
           RegAPIKeyDelete(NewKey, List.ItemPtrs[i]);
           //RegAPIClose(NewKey, List.ItemPtrs[i]);
       end;
     List.Free;
     RegKeyClose(NewKey);
   end {if Key <> 0}
  else
    Result := FALSE;
end;


Но ни с рекурсией, ни без нее (суб ключи только первого уровня вложенности)
всегда удаляется только один первый ключ.


 
MTsv DN   (2005-11-30 19:44) [1]

Привет...
Посмотри:
http://members.chello.nl/t.koning8/kolexregistry.zip
http://www.uus4u.com/download/modules/KOLnMCK/kol_registry.zip - это у меня.

Но это НЕ портированный registry.pas из Delphi в KOL. Я просто избавился от всех uses"ов которые увеличивали размер... Это я к тому, что пользоваться ее надо, как родной Delph"овой...

var
reg : TRegistry
begin
reg := TRegistry.Create(nil);

и т.д.

Переводил ОЧЕНЬ давно...тогда для моих нужд хватило и этого... А сейчас лень править :о)...

Вообще, рекомендую kolexregistry.zip

С Уважением MTsv DN


 
thaddy   (2005-11-30 20:42) [2]

Note that kolexregistry uses err.pas, so it will grow your code a bit.
But you can study the delete method from kolregistry.pas and apply that to your code. Or simply use kolregistry with USE_ERR undefined.

Deleting keys is dangerous! and can destroy a windows installation totally!

Deleting keys should always be done with a backup, that"s why I wrote KolExregistry.


 
_Simon_   (2005-12-01 20:14) [3]

Все это хорошо, но это лучше:

...
function SHDeleteKey(Key: HKey; const SubKey: PChar): LongInt; stdcall;

implementation

function SHDeleteKey; external "shlwapi.dll" name "SHDeleteKeyA";
...


Но трбует IE 4.0 (Уже практически не актуально).


 
Thaddy   (2005-12-02 15:26) [4]

Yes, that works very good, but remember: make a back up of the keys you delete! it is dangerous to delete keys and it is easy to make a mistake. The registry differs between OS versions and even between SP"s



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

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
2-1158221993
ников
2006-09-14 12:19
2006.10.01
куда пропала форма ?


15-1158144621
SPeller
2006-09-13 14:50
2006.10.01
Помогите найти картинку


15-1157884524
Проггер из библиотеки
2006-09-10 14:35
2006.10.01
Формат mp3 (не ID3 тегов!!!)


1-1156182035
TTreeView
2006-08-21 21:40
2006.10.01
Олег


15-1157969722
Александр Иванов
2006-09-11 14:15
2006.10.01
Вопрос по XPath