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.