Форум: "KOL";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "KOL";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c