Developpez.com - Delphi
X

Choisissez d'abord la catégorieensuite la rubrique :


Suppression récursive d'un clé de la base de registre

Date de publication : 24/02/2005

Par Pierre Castelain (Contributions)
 

Fonction permettant de supprimer une clé de la base de registre même si elle n'est pas vide



Sous Windows NT (NT4, 2000, XP, 2003, etc) il n'est pas possible de supprimer directement une clé qui n'est pas vide. Cette fonction se charge de réaliser la suppression récursive des éléments contenus dans la clé avant de la supprimer.

interface uses Windows, Registry; { ---------------------------------------------------------------------------- } { Efface la clé 'key' de la base de registre 'reg' et toutes ses sous-clés } { récursivement. Sous 95 le fait d'effacer la clé supprime aussi les } { sous clés, mais pas sous NT d'où cette fonction. (PC) } {------------------------------------------------------------------------------} function DeleteKeyTree(Root: HKey; Key: string): Boolean; overload; function DeleteKeyTree(reg: TRegistry; Key: string): Boolean; overload; implementation uses Classes, SysUtils; function DeleteKeyTree(Root: HKey; Key: string): Boolean; var reg: TRegistry; begin reg:= TRegistry.Create; try reg.RootKey:= Root; result:= DeleteKeyTree(reg, Key); finally reg.Free; end; end; function DeleteKeyTree(reg: TRegistry; key: string): Boolean; var sl: TStringList; i: Integer; begin Result:= True; if Win32Platform = VER_PLATFORM_WIN32_NT then begin if reg.KeyExists(key) then begin reg.OpenKey(key, false); // False -> ne pas créer la clé si elle n'existe pas. if reg.HasSubKeys then begin sl:= TStringList.Create; try reg.GetKeyNames(sl); reg.CloseKey; for i:=0 to sl.Count-1 do Result:= Result and DeleteKeyTree(reg, key+'\'+sl.Strings[i]); sl.Free; except sl.Free; reg.CloseKey; raise; end; end else begin reg.CloseKey; Result:= reg.DeleteKey(key); end; reg.CloseKey; // Juste au cas où. end else Result:= False; // La clé n'existe pas. end else // Win32s, Win95, Win98, Win00? reg.DeleteKey(key); end;

Articles
Delphi 2005 : Découvrez le futur Delphi 2005
DirectX : Introduction à DirectX 9 en Delphi
Variables d'environnement : Présentation, description et utilisation des variables d'environnement sous Windows
Mailslots : Présentation des mailslots et de leur utilisation en Delphi pour la communication inter-processus
Projets complets avec sources
NumericalParser : Parser numérique en Delphi afin de transformer une chaîne de caractères en valeur flottante ou entière.
RegSearch : Composant de recherche dans la base de registre
CDAReader : Lecture des informations contenues dans les fichier CDA de Windows
ScreenSaverPreview : Composant d'affichage de l'aperçu des économiseurs d'écran de Windows
ScanResources : Programme d'exploration des ressources des programmes ou des dll d'un répertoire
ClipboardViewer : Démonstration de la détection des modifications et de l'affichage du contenu du presse-papier
Matrix : Tentative de reproduction en Delphi de l'animation bien connue du film Matrix
Sources et exemples
EMFTransform : Transformation (rotation, inversion, miroir) d'un metafile Windows en mémoire
DeleteKeyTree : Suppression récursive d'un clé de la base de registre
MultiStrings : Routines de gestion de tableaux de chaînes C
GetDllFilename : Pour récupérer le chemin d'une dll par son handle
Extension du shell : Exemple d'extension du menu contextuel du shell de Windows
TriStringGrid : Exemple de tri par colonne d'un composant TStringGrid à l'aide d'un algorithme de tri rapide (quick sort)
XPManifestCPL : Utilisation des contrôles XP dans une application du panneau de configuration (cpl)
Bouboules : Modélisation à l'aide du design pattern Observer
Divers
Diagramme ternaire : Un logiciel gratuit de tracé de diagramme ternaire


Copyright © Pierre Castelain. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Responsable bénévole de la rubrique Delphi : Alcatîz -