accéder à une base de registre distante
Transcription
accéder à une base de registre distante
Édition du Registre d'une autre partition Il est parfois nécessaire de modifier un Registre distant. Par exemple si Windows ne démarre plus suite à la modification de la valeur Userinit par un parasite, il sera nécessaire de remettre la bonne valeur. La manip est en partie décrite en bas du tuto sur UBCD4WIN. Il est intéressant de savoir la faire avec Regedit depuis un BARTPE ou simplement depuis un autre système Windows (double installation, ou disque dur déposé et connecté sur un autre PC via un support externe USB). Une autre application est de modifier la lettre du volume de démarrage, par exemple en cas de clonage du système. Par sécurité faire une sauvegarde des ruches avant de les modifier : faire une copie du dossier Windows\System32\config (suggestion pour le nom de la sauvegarde, ajouter la date et l'heure, par exemple config20080915-0414). On peut éventuellement faire de même pour une ruche avant de la Charger dans Regedit. Grosso-modo les ruches correspondent à ces clés (détails en suivant le lien) SAM SECURITY SOFTWARE SYSTEM DEFAULT ntuser.dat HKLM\SAM HKLM\SECURITY HKLM\SOFTWARE HKLM\SYSTEM HKU\.DEFAULT HKCU Les cinq ruches principales sont situées dans C:\Windows\System32\config La ruche de l'utilisateur est située en C:\Documents and Settings\NomDuProfilUtilisateur\ntuser.dat On trouve souvent C:\Documents and Settings\Propriétaire\ntuser.dat Remarquer que le nom de ce dossier est souvent différent du nom du compte, lequel peut être modifié à volonté, alors que le nom du dossier du Profil reste celui créé en premier. La lettre du volume est ici C:\ par convention. Dans la pratique elle peut être bien sûr différente. Et la lettre sera quelconque lorsqu'on accèdera au disque depuis un autre système. Dans le doute il convient de s'assurer qu'on est sur le bon volume en listant ses fichiers. Astuce : créer un fichier dans config avec pour nom "Ruches du volume TOTO". Le disque concerné a ici la lettre H. C'est normal puisqu'on y accède depuis un autre système situé en C. Les ruches générales sont dans H:\Windows\System32\config Quelle est la ruche concernée par Userinit ? Userinit est dans la clé Winlogon ==> HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon HKLM\SOFTWARE correspond à la ruche SOFTWARE ==> H:\Windows\System32\config\SOFTWARE ==> Une fois identifiée la ruche à modifier, on va "Charger la ruche" dans Regedit. Ouvrir Regedit et sélectionner la clé HKEY_LOCAL_MACHINE Une fois HKLM sélectionné, l'item "Charger la ruche" qui était grisé, est devenu utilisable. La ruche va être chargée en tant que nouvelle clé temporaire sous HKLM. On donne un nom arbitraire, par exemple "@@@@@" histoire de bien la repérer. Illustration : Il n'y a plus qu'à naviguer jusqu'à la clé Winlogon de la ruche ==> HKLM\@@@@@\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon et modifier le contenu de la valeur Userinit (valeur habituelle c:\windows\system32\userinit.exe,) Ici on a simplifié en userinit.exe, (ça marche aussi) ==> Pour enregistrer la modification décharger la ruche via le Menu Fichier, "Décharger la ruche". Exportation d'une clé, modification du fichier REG, réimportation On peut se demander s'il est possible d'opérer avec des fichiers REG comme on le fait habituellement. La réponse est oui. Exemple ci-après, avec le même objectif que ci-dessus : réparer une valeur Userinit corrompue. Rappel On peut exporter une clé sous la forme d'un fichier de registre. Un tel fichier a l'extension REG et est éditable dans Bloc-Notes. Un fichier REG est destiné à être fusionné au registre. Faire un clic droit sur la clé à exporter, puis choisir un nom : Donner un nom au fichier REG : Le contenu du fichier winlogon.reg correspond bien à la ruche chargé (nom de clé = @@@@@) Le contenu exporté est assez long, car il inclut toutes les sous-clés. Voici les premières lignes de winlogon.reg ==> Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\@@@@@\Microsoft\Windows NT\CurrentVersion\Winlogon] "AutoRestartShell"=dword:00000001 Il est tout à fait possible de le modifier, à condition de respecter sa syntaxe particulière. Comme on ne s'intéresse aujourd'hui qu'à la valeur Userinit, supprimons tout le reste pour ne garder que : Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\@@@@@\Microsoft\Windows NT\CurrentVersion\Winlogon] "Userinit"="C:\\WINDOWS\\system32\\userinit.exe," Remarquer les doubles anti-slashs \\. Rappel : Userinit peut lancer plusieurs programmes, c'est la raison de la présence de la virgule. Si vous trouvez Userinit = userinit.exe, xpqzh.exe, vous devriez sans doute supprimer xpqzh.exe qui doit être un gros virus. Pour l'exercice on se propose de simplifier le chemin vers userinit.exe On remplace donc : "Userinit"="C:\\WINDOWS\\system32\\userinit.exe," par "Userinit"="userinit.exe," Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\@@@@@\Microsoft\Windows NT\CurrentVersion\Winlogon] "Userinit"="userinit.exe," Sauvegarder winlogon.reg Pour fusionner winlogon.reg cliquer sur le fichier, ou clic droit, Fusionner. On peut aussi utiliser dans Regedit le Menu Fichier, Importer. Faire F5 dans Regedit pour rafraichir l'affichage et vérifier que la valeur a bien été modifiée Pourquoi une virgule après Userinit.exe ? À vrai dire ça marche sans. Mais au cas où on voudrait ajouter un programme, il est prudent qu'elle soit en place par défaut. Si cette virgule ne séparait pas les chemins des programmes à démarrer, userinit ne serait pas lancé, avec les conséquences que l'on connait. Voici un exemple d'utilisation possible avec ajout d'un batch qui sera exécuté à chaque démarrage de Windows.