Avertissement : L'article suivant implique la modification du registre de votre système. Une utilisation incorrecte de l'éditeur de registre peut entraîner de graves problèmes nécessitant la réinstallation de votre système d'exploitation. Utilisez l'éditeur du registre et les instructions suivantes à vos risques et périls.
Utilisation de REGEDIT sous DOS
Le même REGEDIT que nous utilisons dans Windows fonctionne également comme un programme DOS. REGEDIT.EXE prend en charge les arguments de ligne de commande qui nous permettent de reconstruire complètement le registre, en laissant les "saletés" et les espaces vides. Nous éliminerons le besoin de taper les commandes de manière répétitive en créant quatre fichiers batch que vous pourrez transporter avec vous et exécuter à partir d'une disquette. Pour simplifier, nous supposerons que les fichiers SYSTEM.DAT, USER.DAT et REGEDIT.EXE se trouvent dans le dossier de l'ordinateur. C:\WINDOWS répertoire. Première étape : Supprimer les attributs ReadOnly et Hidden de SYSTEM.DAT et USER.DAT La première étape de la reconstruction du registre Windows à partir du DOS consiste à supprimer les attributs ReadOnly, Hidden et System des fichiers SYSTEM.DAT et USER.DAT. Un fichier batch qui vous permet de désactiver et d'activer les attributs à volonté (REGATT.BAT) ressemble à ceci : @echo off if not "%1"=="-" if not "%1"=="+" goto INSTRUCT attrib %1r %1h %1s c : \windows\system.dat attribue %1r %1h %1s c : \windows\user.dat goto ENDIT :INSTRUCT echo. echo Vous devez spécifier un paramètre - ou +, comme dans "%0 +" ou "%0 -". :ENDIT echo.
Pour l'utiliser, entrez la commande REGATT - ou REGATT + pour supprimer ou ajouter les attributs du fichier, respectivement.
Voici comment fonctionne REGATT.BAT :
@echo off: Prevents the lines that follow from being displayed on the screen while the commands are being executed. The "@" prevents "echo off" from displaying.
if not "%1"=="-" if not "%1"=="+" goto INSTRUCT: This makes the batch file look for one parameter and limits the parameter choices to either "-" or "+." If neither is found, the script jumps to the INSTRUCT portion of the batch file. Note the use of the double "equals" signs (==).
attrib %1r %1h %1s c:\windows\system.dat: Runs the "attrib" command on SYSTEM.DAT with either "-r -h -s" or "+r +h +s," depending on the parameter.
attrib %1r %1h %1s c:\windows\user.dat: Runs the "attrib" command on USER.DAT the same as it does for SYSTEM.DAT.
goto ENDIT: Jumps over the INSTRUCT statement since all went well.
:INSTRUCT: Label that identifies this portion of the batch file.
echo.–: Prints a blank line on the screen. Note that there is no space between "echo" and "."
echo You must specify a - or + parameter, as in "%0 +" or "%0 -": Instructions for using the batch file. The %0 is a variable that is automatically replaced by DOS with the name of the batch file you typed on the command line. If you typed regatt in lower case, the line will read "You must specify a - or + parameter, as in regatt + or regatt -." If you change the name of the batch file to "wom.bat" and type WOM in upper case, it will read "You must specify a - or + parameter, as in WOM + or WOM -" without further editing. Neat, huh?
:ENDIT: Label that identifies this portion of the batch file.
echo.: Prints a blank line on the screen before returning to the prompt.
Deuxième étape : Créez une sauvegarde de SYSTEM.DAT et USER.DAT Le processus de reconstruction détruit effectivement le registre actuel. Si la reconstruction échoue (j'ai vu cela se produire lorsque les fichiers DAT sont gravement corrompus), il n'y aura pas de registre. Avoir un registre corrompu à restaurer est mieux que de ne pas avoir de registre du tout. Pour faire une sauvegarde, nous copions simplement les fichiers SYSTEM.DAT et USER.DAT "non corrompus" avec REGBACK.BAT : @echo off si "%1"=="" goto INSTRUCT copier c : \windows\system.dat c : \windows\system. %1 copier c : \windows\user.dat c : \windows\user. %1 goto ENDIT :INSTRUCT echo. echo Vous devez entrer une extension de fichier de 1 à 3 caractères, comme dans "%0 sav". :ENDIT echo.
La plupart des lignes de REGBACK.BAT sont similaires à celles de REGATT.BAT. Les trois lignes uniques sont :
if "%1"=="" goto INSTRUCT: This jumps to the INSTRUCT section if no parameter is given after the "regback" command. Without a parameter, the value of %1 is null, so the statement translates to if ""=="" goto INSTRUCT and, since double-quotes indeed equal double-quotes, the script jumps to give the user instructions.
copy c:\windows\system.dat c:\windows\system.%1: Copies SYSTEM.DAT to SYSTEM.parameter. Be sure to limit your parameter to three allowable DOS characters.
copy c:\windows\user.dat c:\windows\user.%1: Copies USER.DAT to USER.parameter as above.
Troisième étape : Reconstruction du registreNE PAS TENTER D'EXÉCUTER CES COMMANDES À MOINS D'AVOIR EFFECTUÉ DES COPIES DE SAUVEGARDE DE SYSTEM.DAT ET USER.DAT ! N'oubliez pas que vous allez détruire la copie existante du registre lors de l'étape de reconstruction. Si la reconstruction échoue, il en sera de même pour vous. Assurez-vous d'avoir votre propre sauvegarde. REGREBLD.BAT ressemble à ceci : @echo off echo. echo Exportation du contenu du registre. Veuillez patienter... regedit /l:c : \windows\system.dat /r:c : \windows\ user.dat /e c : \windows\newreg.reg echo Reconstruction du registre de Windows. Ne pas interrompre ! regedit /l:c : \windows\system.dat /r:c : \windows\ user.dat /c c : \windows\newreg.reg écho. del c : \windows\newreg.reg écho.
REGREBLD.BAT ne prend aucun paramètre. Voici ce que font les lignes cruciales :
echo Exporting registry contents. Please wait...: The REGEDIT "export" command displays no information while it's executing. This is a courtesy line to let you know that something is happening.
regedit /l:c:\windows\system.dat /r:c:\windows\user.dat /e c:\windows\newreg.reg: Exports the contents of the current registry to a file we'll call "newreg.reg." The "/l:" and "/r:" switches point to the exact paths of SYSTEM.DAT and USER.DAT, respectively. The "/e" switch is for "export" and "c:\windows\newreg.reg" is the name of the target file that is created during the process.
echo Rebuilding the Windows registry. Do not interrupt!: Another courtesy statement. Unlike the "export" command, the REGEDIT "create" command displays a progress counter. However, it doesn't state what it's creating, only that it’s importing.
regedit /l:c:\windows\system.dat /r:c:\windows\user.dat /c c:\windows\newreg.reg: Creates a new registry from the contents of "c:\windows\newreg.reg." The key here is the "/c" switch, for "create." As soon as it is encountered, the current SYSTEM.DAT and USER.DAT are destroyed as new files are created from the data in newreg.reg. If this process is interrupted, the new registry will be incomplete and, therefore, useless.
echo.: The progress counter that is displayed by REGEDIT does not have a carriage return. This statement forces one at the completion of the "create" process.
del c:\windows\newreg.reg: Deletes the now unnecessary newreg.reg data file. You can remove this line if you want to look at the contents of newreg.reg before you delete it manually.
La routine complète d'exportation/création peut prendre beaucoup de temps, en fonction de la taille et de l'état du registre actuel. J'ai vu qu'il fallait entre cinq minutes et plus d'une heure pour reconstruire le registre sur des PC de bureau. Je ne recommande pas de l'utiliser sur les ordinateurs portables. Si la reconstruction est réussie (et la plupart du temps elle l'est), vous n'aurez pas besoin de l'étape suivante.
Quatrième étape : Restauration d'une reconstruction qui a échoué La quatrième étape consiste à remettre le registre dans son état précédent au cas où une reconstruction ratée vous priverait des fichiers SYSTEM.DAT et USER.DAT. Nous appellerons ce fichier batch REGRET.BAT. Vous vous souvenez de l'extension que vous avez utilisée lors de la création de vos sauvegardes ? Vous en aurez besoin ici : @echo off if "%1"=="" goto INSTRUCT if not exist c : \windows\system. %1 goto NOFILE s'il n'existe pas c : \windows\user. %1 goto NOFILE attrib -r -h -s c : \windows\system.dat attrib -r -h -s c : \windows\user.dat del c : \windows\system.dat del c : \windows\user.dat copie c : \windows\system. %1 c : \windows\system.dat copie c : \windows\user. %1 c : \windows\user.dat goto ENDIT :NOFILE echo. echo Impossible de localiser un ou plusieurs de vos fichiers de sauvegarde "%1" ! echo Veuillez vérifier l'extension de votre fichier et réessayer. goto ENDIT :INSTRUCT echo. echo Vous devez donner une extension de fichier de sauvegarde valide, comme dans "%0 ext" :ENDIT echo.
REGRET.BAT s'exécute en entrant "regret ext" à l'invite, où "ext" est l'extension que vous avez utilisée lors de la création de vos sauvegardes. Si les fichiers ext ne sont pas trouvés, REGRET vous le dit. Toutes les commandes REGRET sont similaires à celles que nous avons utilisées dans les fichiers batch précédents. Notez qu'après avoir supprimé les fichiers SYSTEM.DAT et USER.DAT défaillants, nous copions les sauvegardes dans les DATs au lieu de les renommer. Je ne me sens jamais à l'aise de supprimer des fichiers de sauvegarde critiques tant que je ne suis pas absolument sûr qu'ils ne seront plus nécessaires. Supprimez-les manuellement lorsque vous êtes à l'aise.
Utilisez ce que vous avez appris Maintenant que vous avez vos fichiers batch, allez-y et essayez-les sur un système malade. Démarrez le PC dans un véritable DOS "Safe mode command prompt only" et exécutez les fichiers à partir d'une disquette. Si vous rendez la disquette amorçable, assurez-vous d'avoir un AUTOEXEC.BAT contenant une instruction de chemin d'accès pointant sur C:\WINDOWS ; C:\WINDOWS\COMMAND. Une reconstruction réussie du registre résoudra bon nombre de vos problèmes Windows "mystérieux", y compris de nombreuses erreurs de protection Windows.
Source : TechRepublic