La base du registre A) Historique La base de registre est apparue avec Windows 3.1, comme une méthode alternative aux fichiers INI pour stocker les paramètres de Windows et des applications. Auparavant, les fichiers textes linéaires sous DOS (CONFIG.SYS, IO.SYS...) puis les fichiers INI permettaient de stocker les paramètres des systèmes et applications. L apparition d'ole * (Objet Linking and Embedding) dans Windows 3.1 à considérablement accru les besoins en stockage et consultation de paramètres (les fichiers INI étaient limités à 64 K). Windows 95 a été la première version de Windows basée sur la base de registre, et toutes les versions qui suivent (Windows7 compris) utilisent cette même base de registre (les fichiers INI sont toujours présents pour des raisons de compatibilité, hélas toujours utilisés par certains programmes). Toutes les versions de Windows ont apporté des innovations, celles-ci se sont parfaitement intégrées à la base de registre (Plug and Play, stratégies systèmes, profils utilisateurs,...). B) Structure de la Base de Registres On accède à la base de registre en ouvrant Démarrer, Exécuter et on tape regedit ou regedt32 une fenêtre ressemblant à l explorateur Windows s ouvre. Elle est constituée de cinq dossiers principaux (on les appelle aussi ruches de l anglais hives). * OLE Object Linking and Embedding (OLE) est une technologie de chez Microsoft qui autorise les liens et de documents et d autres objets. Pour les développeurs, cela apporte les OLE Control extension (OCX), une méthode pour développer et utiliser les éléments d une interface utilisateur personnalisée. 1
En réalité la base du registre est divisée en deux parties : HKEY_LOCAL_MACHINE et HKEY_USERS, souvent écrites en abrégé : HKLM et HKU Les trois autres branches principales sont en réalité des liens vers des sous répertoires de ces deux clefs. HKEY_CLASSES_ROOT : Il s'agit d'un lien vers HKEY_LOCAL_MACHINE\SOFTWARE\Classes et contient des liens entre les applications et les types de fichiers ainsi que des informations sur OLE. HKEY_CURRENT_USER : Il s'agit d'un lien vers HKEY_USERS\<SID of User> et contient des informations sur les utilisateurs actuellement connectés (environnement, connexions réseaux, imprimantes etc.) HKEY_USERS : Contient des informations sur les profils utilisateurs actuellement chargés, y compris "defaut" qui est le profil utilisateur par défaut. HKEY_CURRENT_CONFIG : Il s'agit d'un lien vers HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current et contient des informations sur la configuration courante. 1) HKEY_LOCAL_MACHINE. Contient les informations sur la station de travail, le matériel qu on y trouve, les logiciels installés, et les préférences locales applicables à tout usager se branchant sur cet ordinateur. Ses principales sous-clés sont: Hardware: principalement pour des informations sur la communication par port série Network: informations propres au réseau auquel l usager est branché; Security: paramètres de sécurité du réseau Software: certains paramètres logiciels System: informations quant au lancement du système, à ses périphériques et aux paramètres du système d exploitation en tant que tel. 2) HKEY_USERS. Contient les préférences individuelles de chaque usager pour la station de travail en question, chaque usager étant représenté par une sous-clé SID (Security Identification) se retrouvant sous la branche principale. C) l éditeur du registre. Il a la même apparence que l explorateur de Windows. Cet éditeur permet de visualiser le contenu du registre, d y effectuer des recherches, et d en éditer le contenu. Nous pouvons importer ou exporter facilement des clés. Il est possible d ajouter manuellement des clés en passant par le menu Édition- >Nouveau, ou en passant par le menu contextuel du côté droit (côté contenu) de l éditeur. Il est aussi possible de modifier une clé ou une valeur, soit en la renommant (ce qui est permis pour la plupart des clés) ou en la modifiant (au sens de changer sa valeur). On peut aussi supprimer une clé. 2
Toute suppression de clé est définitive il n y a pas besoin d enregistrement pour valider une action sur le registre. Alors avant toute modification sur le registre il est important d en effectuer une sauvegarde. A gauche un arbre de dossiers A droite le contenu de ceux-ci Le registre offre plusieurs types de données REG_BINARY : Ce type permet de gérer dans le registre des données binaires. Les données binaires se composent d'une suite d'octets qui peut être cryptée et donc difficile à analyser. Pour des raisons de sécurité, ne vous lancez pas dans l'édition des données binaires. La visualisation est possible par l'éditeur. Double-cliquez sur le nom affecté de données binaires : une boite de dialogue spéciale apparaît, offrant les données binaires converties, si possible, en chaine de caractères. Les textes cryptés en binaires sont ainsi facilement lisibles. Exemple de données BINARY 3
REG_DWORD : Toutes les données susceptibles d'êtres cryptées sur 4 octets, utilisent ce type. Si la signification des valeurs pour un nom est connue, ces valeurs sont facilement modifiables par l'éditeur. La saisie peut donc intervenir au choix en format hexadécimal ou décimal. Par l'accessoire calc (la calculatrice) vous pouvez éventuellement entreprendre la conversion entre hexadécimal et décimal. Exemple de données DWORD REG_EXPAND_SZ : Ce type permet de gérer une chaîne de caractères extensible par le système. "Extensible" signifie que la chaîne de caractères contient une variable que le système se charge de remplacer. La variable %systemroot% représente par exemple le dossier Windows ; elle sera automatiquement remplacée par le dossier Windows effectif lors de la lecture de la valeur. REG_MULTI_SZ : Une liste de chaînes de caractères liés (en fait une chaîne de caractères en plusieurs parties) peut être gérée par ce type. Chaque chaîne individuelle est séparée du reste par le caractère NULL(00). Le caractère de terminaison est également un caractère NULL. Sur cet exemple la variable nous indique la version et la date du BIOS. REG_SZ : Ce type gère une chaîne de caractères de texte simple. C'est le type le plus courant pour les paramètres de Windows et des applications. 4
Ici le nom de l utilisateur connecté. REG_FULL_RESOURCE_DESCRIPTOR (XP seulement) : Série de tableaux imbriqués destinés à stocker une liste de ressources utilisée par un périphérique matériel physique. Ces données sont détectées par le système et écrites dans l'arborescence \Hardware Description et elle s'affichent dans l'éditeur du Registre au format hexadécimal comme Valeur binaire. D) Utilisation de REGEDIT. L'éditeur du registre, "REGEDIT", est un outil très puissant. Peu de documentation y est consacrée, son interface est très simple, il donne accès à des paramètres qui, pour la plupart, ne sont pas accessibles autrement. L'outil s'est amélioré au fil des versions de Windows, permettant notamment de créer des favoris vers des clefs souvent utilisées ou de sauvegarder l'état dans lequel il se trouvait lors de la précédente utilisation. 5
L'utilisation principale qui est généralement faite de cet outil c'est la recherche de clefs, de valeurs et de données. Mais Regedit ne peut effectuer de recherche sur n'importe quelle donnée. Il n'est pas capable de rechercher une donnée REG_DWORD ou des valeurs binaires. Il ne pourra faire de recherche que sur des noms de clefs (que le nom soit partiel ou pas) des noms de valeurs et des chaînes dans les données. Dans ces conditions, la seule façon d'outrepasser cette limitation est d'exporter la base de registre ou la branche de la base de registre dans un fichier REG. Là, avec votre éditeur de texte favori ou tout simplement Notepad vous lancez cette recherche sur ce fichier. Cela suppose cependant de connaître la façon dont Regedit formate les données dans les fichiers.reg. Parmi la dizaine de types de données que l'on trouve dans la base de registre, Regedit n'en affiche que trois dans les fichiers REG (REG_SZ, REG_DWORD, et REG_BINARY). En fait, les autres types sont signalés par un code signalé entre parenthèses dans le fichier REG : une donnée de type REG_MULTI_SZ sera signalée par " hex(7)". Ainsi, la lettre "A" en mode REG_BINARY doit être convertie en valeur Unicode ce qui donne une donnée hexadécimale "0x0041". C'est loin d'être évident les premières fois. Pour déployer un même paramètre ou valeur sur plusieurs machines, le plus commode est encore de recourir à la fonction Export de Regedit. On se place sur la branche voulue ou une sous clé spécifique et on choisit Fichier Exporter ou un clic-droit sur la clé et Exporter. Cinq types de formats d'exportation sont alors proposés. Par défaut, Regedit sous XP propose le format REG. Il s'agit du format REG de type 5, compatible seulement avec Windows 2000 et XP. Entre un fichier REG 5 et REG 4, la différence tient au codage. Le premier utilise Unicode, le second est un texte ANSI. Dans le premier, chaque caractère REG_EXPAND_SZ et REG_MULTI_SZ est codé sur 2 octets, contre un seul en REG 4. La lettre "A" est donc 0x0041 dans le premier cas et 0x41 dans le second. Importer une ruche, Regedit va préalablement détruire la branche qui est remplacée. Pour une opération de restauration c'est appréciable dans la mesure où on ne souhaite pas que des paramètres se superposent. Charger une ruche permet de voir sa structure et ses valeurs sans pour autant qu'elle remplace la ruche de même nature sur laquelle fonctionne Windows. C'est là la différence entre "charger" et "importer" une ruche. Cette commande n est disponible que dans la clé HKLM ET HKU.(ne pas oublier de décharger la ruche après consultation). En conclusion l'opération d'importation détruit les valeurs à remplacer comme devrait agir toute opération de backup. L'opération de chargement de ruche sert à l'édition de ces paramètres et éventuellement à la modification, Regedit étant le seul programme à permettre l'édition des ruches en langage compréhensible. Il est aussi possible de créer ses propres clés de registre en écrivant un fichier texte avec le bloc-note par exemple puis en changeant son extension en.reg. E) Sauvegarde et restauration du registre : Avant de procéder à une modification de la base de registre il est important d en faire une sauvegarde préalable. La manière la plus simple de procéder pour les petites modifications qui n'impliquent pas de nombreuse clefs, c'est de renommer préalablement la valeur que l'on va modifier. Ainsi, pas exemple, si l'on 6
veut modifier "SCREENSAVE.EXE" dans HKEY_CURRENT_USER\Control Panel\Desktop, on renommera préalablement cette valeur telle que "ancien_screensave.exe"... SI les modifications dans l arborescence, sont plus importantes, il vaut mieux préalablement exporter la branche en question. Pour ce faire, on fait un clic droit sur la branche parent, puis on sélectionne "Exporter". Reste plus qu'à choisir un nom et une destination. En double-cliquant sur le fichier REG ainsi créé, on fait ce que l'on appelle une importation dans la base de registre. Du coup, il ne faut pas perdre de vue que si les valeurs originelles que vous auriez modifiées peuvent être rétablies de cette manière, il n'en sera cependant pas de même avec des valeurs créées de toute pièce. Si une valeur existe dans la base de registre mais pas dans le fichier REG elle sera laissée intacte. F) La restauration système La restauration système repose sur un principe assez simple selon lequel des "clichés" instantanés de votre système sont régulièrement pris. Si vous souhaitez utiliser la restauration système pour retrouver votre PC dans l'état dans lequel il était avant l'installation d'un programme, n'oubliez pas qu'il vaut mieux d'abord désinstaller ce programme puis ensuite déclencher la restauration. La restauration en elle-même ne va pas restituer votre PC exactement dans l'état dans lequel il se trouvait. Par exemple, vos données personnelles ajoutées après le point de restauration seront conservées. En Mode Sans Echec, la restauration système ne permet que de restaurer, pas de créer un point de restauration. La restauration du système s'exécute par un raccourci dans le menu Démarrer, Programmes, Accessoires, Outils systèmes, restauration du système qui pointe sur "%systemroot%\system32\restore\rstrui.exe". Le fichier filelist.xml qui se trouve dans %systemroot%\system32\restore est un fichier de définition pour la restauration système où l'on peut voir ce qui est exclut ou inclut par la surveillance du système. Les points de restauration sont physiquement présents dans un dossier caché, sur chaque volume, appelé System Volume Information. Sous ce dossier, un dossier portant le nom GUID de votre machine et encore en dessous, des dossiers RPxx où le x est un chiffre. Pour aller plus loin dans la configuration de la restauration du système, il faut passer par la base de registre et éditer la clef HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore. Toutes les valeurs sont de type REG_DWORD. Vous pourrez ainsi définir l'intervalle de temps entre chaque opération automatique de sauvegarde (délai par défaut de 24 heures exprimées en secondes, soit 15180 en binaire 0x15180 qui correspond à 86400 secondes en mode décimal), la durée de vie maximale d'un point de restauration (3 mois par défaut, soit 90 jours ou encore 7.776.000 secondes en mode décimal et 76a700 secondes en mode hexadécimal), etc. A savoir, si vous désactiver la restauration système via l'interface graphique, vous effacez du même coup les points de restauration créés jusqu'à présent sur chaque volume (les fichiers RPxx). Si votre souhait est de conserver ces points de restauration pour une utilisation ultérieure, vous devez désactiver la Restauration Système uniquement par la base de registre en éditant la valeur "DisableSR" pour lui attribuer 0x01. G) La recherche dans la base de registre Dans l explorateur du registre Onglet Edition, rechercher, ou Ctrl+F, tapez la clé ou la valeur de celle-ci et lancer la recherche. Si le résultat n est pas celui attendu relancer la recherche en tapant sur F3. 7
De plus vous pouvez utiliser l onglet Favoris pour un retour rapide vers des clés que vous modifiez souvent. H) La connexion à un registre réseau Dans l onglet Fichier, cliquez sur connexion à un registre réseau une fenêtre ressemblant à celle qui nous permet d autoriser un utilisateur à accéder à un Partage s ouvre. Cliquez sur Avancé. Puis sur Rechercher, sélectionner le poste dont vous voulez voir la base de registre. Deux fois OK Les deux clés HKLM ET HKU de la machine distante apparaissent sous vos propres clés de registre. Pour que la connexion soit possible il faut que le service accès au registre distant soit démarré. Et que le port 135 du firewall de la machine distante soit ouvert I) Exportation même le registre entier. Vous pouvez exporter n importe quelle clé du registre, branche du registre ou Pour exporter une clé se placer sur le dossier contenant celle-ci cliquez droit Exporter ou Fichiers, Exporter. Puis vous lui donnez un nom et un endroit de stockage. En double-cliquant sur cette clé ou en l important vous modifierez ou vous rétablirez vos paramètres. 8
J) Le Nettoyage du registre Lorsque vous désinstaller ou supprimer des programmes de nombreuses entrées restent stockées dans votre base de registre. Il serait long et fastidieux de nettoyer manuellement le registre et il est certain que des clés seront toujours présentes. Des Outils sont à votre disposition pour le faire. En voici trois mais la liste est longue. RegCleaner, CCleaner, Regseeker. Tutoriel Recliner : http://www.softastuces.com/tuto/maint/regcleaner/clean.php http://www.vulgarisation-informatique.com/nettoyer-windows- Tutorial CCleaner: ccleaner.php Tutoriel RegSeeker: http://www.6ma.fr/tuto/regseeker+nettoyer+base+registre-104 9