Предупреждение. Следующая статья посвящена редактированию системного реестра. Неправильное использование редактора реестра может привести к серьезным проблемам, требующим переустановки операционной системы. Используйте редактор реестра и следующие инструкции на свой страх и риск.
Использование REGEDIT в DOS
Тот же REGEDIT, который мы используем в Windows, также работает как программа DOS. REGEDIT.EXE поддерживает аргументы командной строки, которые позволяют нам полностью перестроить реестр, оставляя после себя "грязь" и пустые места. Мы избавим от необходимости повторного ввода команд, создав четыре пакетных файла, которые вы можете носить с собой и запускать с дискеты.
Для простоты предположим, что SYSTEM.DAT, USER.DAT и REGEDIT.EXE находятся в каталоге C:\WINDOWS.
Шаг первый: удалите атрибуты ReadOnly и Hidden из SYSTEM.DAT и USER.DAT. Первым шагом в восстановлении реестра Windows из DOS является удаление атрибутов ReadOnly, Hidden и System из файлов SYSTEM.DAT и USER.DAT. Пакетный файл, который позволяет выключать и включать атрибуты по желанию (REGATT.BAT), выглядит следующим образом: @echo off, если не "% 1" == "-", если нет "% 1" == "+" Перейти INSTRUCT attrib% 1r% 1h% 1s c:\windows\system.dat attrib% 1r% 1h% 1s c:\windows\user.dat Перейти к ENDIT: INSTRUCT echo.
echo Необходимо указать параметр - или +, например, «% 0 +» или «% 0 -»: ENDIT echo.
Чтобы его использовать, введите команду REGATT - или REGATT +, чтобы удалить или добавить атрибуты файла соответственно.
Вот как работает 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.
Шаг второй: Создайте резервную копию SYSTEM.DAT и USER.DAT. Процесс восстановления эффективно уничтожает текущий реестр. Если перестроить не удастся (я видел, что это происходит, когда файлы DAT сильно повреждены), реестра не будет. Восстановление поврежденного реестра лучше, чем отсутствие реестра вообще.
Чтобы сделать резервную копию, мы просто копируем "unattribed" файлы SYSTEM.DAT и USER.DAT с REGBACK.BAT: @echo off, если «% 1» == »« Перейти к копии INSTRUCT c:\windows\system.dat c:\ Windows \ System.% 1 копия c:\windows\ user.dat c:\windows\ user.% 1 Перейти к ENDIT: INSTRUCT echo.
echo Вы должны ввести расширение файла от 1 до 3 символов, как в «% 0 sav»: ENDIT echo.
Большинство строк в REGBACK.BAT аналогичны тем, что есть в REGATT.BAT. Три уникальные линии:
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.
Шаг третий: Восстановление реестра. НЕ ПЫТАЙТЕСЬ ЗАПУСТИТЬ ЭТИ КОМАНДЫ, ЕСЛИ ВЫ НЕ СОЗДАЛИ РЕЗЕРВНЫЕ КОПИИ SYSTEM.DAT И USER.DAT! Помните, что вы уничтожите существующую копию реестра на этапе восстановления. Если восстановление не удастся, вы тоже. Убедитесь, что у вас есть собственная резервная копия.
REGREBLD.BAT выглядит так: @echo off echo.
echo Экспорт содержимого реестра. Пожалуйста, подождите...
regedit /l:c:\windows\system.dat /r: c:\windows\ user.dat /ec:\windows\newreg.reg echo Восстановление реестра Windows. Не прерывайте!
regedit /l:c:\windows\system.dat /r: c:\windows\ user.dat /cc:\windows\newreg.reg echo.
del c:\windows\ newreg.reg echo.
REGREBLD.BAT не имеет параметров. Вот что делают решающие строки:
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.
Полная процедура экспорта / создания может занять довольно много времени, в зависимости от размера и состояния текущего реестра. Я видел, что восстановление системного реестра на настольных ПК занимает от пяти минут до более часа. Я не рекомендую использовать его на ноутбуках. Если восстановление будет успешным (и в большинстве случаев), вам не понадобится следующий шаг.
Шаг четвертый: Восстановление неудачной перестройки. Четвертый шаг включает в себя возврат реестра к его предыдущему состоянию, если неудачная перестройка оставляет вас без рабочих файлов SYSTEM.DAT и USER.DAT. Мы назовем этот пакетный файл REGRET.BAT. Помните расширение, которое вы использовали при создании резервных копий? Вам понадобится здесь: @echo off, если "% 1" == "" перейти к INSTRUCT, если не существует c:\windows\system.% 1 перейти к NOFILE, если не существует c:\windows\user.% 1 перейти к атрибуту NOFILE -r -h -sc:\windows\system.dat attrib -r -h -sc:\windows\user.dat del c:\windows\system.dat del c:\windows\user.dat copy c:\windows\system.% 1 c:\windows\system.dat copy c:\windows\user.% 1 c:\windows\user.dat Перейти к ENDIT: NOFILE echo.
echo Не удается найти один или несколько файлов резервных копий "% 1"!
echo Пожалуйста, подтвердите расширение файла и попробуйте снова.
Перейти к ENDIT: ИНСТРУКЦИЯ эхо.
echo Необходимо указать правильное расширение файла резервной копии, как в «% 0 ext»: ENDIT echo.
REGRET.BAT запускается путем ввода «regret ext» в командной строке, где «ext» - это расширение, которое вы использовали при создании резервных копий. Если ext файлы не найдены, REGRET сообщит вам. Все команды REGRET аналогичны командам, которые мы использовали в предыдущих пакетных файлах. Обратите внимание, что после удаления сбойных файлов SYSTEM.DAT и USER.DAT мы копируем резервные копии в DAT, а не переименовываем их. Я никогда не чувствую себя комфортно, удаляя критически важные файлы резервных копий, пока не буду абсолютно уверен, что они больше не понадобятся. Удалите их вручную, когда вам удобно.
Используйте то, что вы узнали. Теперь, когда у вас есть пакетные файлы, попробуйте их в больной системе. Загрузите компьютер с истинной DOS "Только для командной строки безопасного режима" и запустите файлы с дискеты. Если вы делаете загрузочную дискету, убедитесь, что у вас есть AUTOEXEC.BAT, который содержит инструкцию пути, указывающую на C:\WINDOWS; C:\WINDOWS\COMMAND. Успешная перестройка реестра решит многие ваши "загадочные" проблемы с Windows, включая многие ошибки защиты Windows.
Источник: TechRepublic