Тема: AutoHotkey + ERUNT = Удобный бэкап реестра
А вам известна чудо прожка ERUNT ? Если нет, то настоятельно рекомендую. С её помощью можно очень легко делать бэкап реестра и восстанавливать его. Прог для таких целей существует немало, но если учесть, что ERUNT не требует установки, может работать из командной строки, а сам процес хоть сохранения, хоть восстановления занимает максимум 2 секунды (перезагрузка после восстановления, не в счет), то, как говорится, маст хэв. В комплекте с ней идут две крошечные утилитки для автоматизации бэкапов и для сжатия реестра. А весь комплект целиком весит 500 кб (!). К тому же, программа бесплатна. Я её мгновенно полюбил как незаменимый инструмент при экспериментах с реестром. Юзаю уже года полтора-два и ни разу не глюканула.
Найти это чудо немецкой мысли можно здесь http://www.larshederer.homepage.t-online.de/erunt. (Предложат пройти на другие сайты, поэтому вот прямой линк на закачку http://www.aumha.org/downloads/erunt.zip). На сайте можно взять русификатор, но я бы не рекомендовал его использовать по причине его кривости. На сайте же есть и крошечный vbs-скрипт для автоматизации бэкапа (правда, кажется, он на немецком).
Этот vbs-скрипт показался мне малофункциональным, поэтому я решил написать свой (AHK). Собственно это был один из первых AutoHotkey'ных скриптов, который я написал. Теперь я его немного подредактировал и предлагаю вам. Если поместить его в автозагрузку, то он будет ежедневно создавать бэкап реестра. Можно указать, чтобы бэкапилось в подпапки по дням недели, можно указать, чтобы бэкап создавался только один раз в день. И, конечно, можно запускать скрипт "вручную" (перед тем как поковыряться в реестре). Короче, посмотрите сами. Скриптец незатейлив.
В качестве бонуса, прикладываю свой перевод для ERUNT'а. Возможно, перевод и не высший, но точно лучше предлагаемого на оф. сайте. В архиве 4 файла, которые нужно поместить в папку с ERUNT'ом.
;*******************************************************************************
; AutoHotkey Version: 1.0.44.08+
; Автор: Androgen Belkin
; Имя скрипта: ERUNT_Run.ahk (v.1.1)
;*******************************************************************************
; Создание бэкапа реестра с помощью ERUNT.
;*******************************************************************************
#NoEnv ; запрещаем имена переменных как у переменных окружения (повышаем производительность скрипта)
#NoTrayIcon ; не отображать иконку скрипта в трее
; ========== НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ===============
ERUNT_Path = D:\Totalcmd\Utilits\Erunt\ERUNT.EXE ; путь к экзешнику
Dest_Path = G:\_MyRegBackup ; путь к целевой папке (куда сохранять резервные копии)
Day_Sub_Dir = 1 ; создавать ли подпапку с днем недели (1 - "да", любое другое значение - "нет")
Sysreg = 1 ; сохранять ли системный реестр (1 - "да")
Curuser = 1 ; сохранять ли реестр текущего пользователя (1 - "да")
Otherusers = 0 ; сохранять ли загруженный реестр других пользователей (1 - "да")
Noconfirmdelete = 1 ; НЕ подтверждать удаление уже существующих резервных копий в папке назначения (1 - НЕ подтверждать)
Noprogresswindow = 0 ; НЕ показывать окно прогресса выполнения (1 - НЕ показывать)
Only_Once_In_Day = 0 ; создавать бэкап только один раз в день или при каждом входе в систему (1 - один раз в день)
Final_Msg = 1 ; показывать ли сообщение об окончании бэкапа (1 - "да")
Title = ERUNT. Бэкап реестра ; заголовок для окон сообщений
; ========== КОНЕЦ НАСТРОЕК ПОЛЬЗОВАТЕЛЯ ==========
; ПРОВЕРЯЕМ ПРАВИЛЬНОСТЬ УКАЗАНИЯ ПУТЕЙ
IfNotExist, %ERUNT_Path% ; если ERUNT.exe не найден, то...
{
MsgBox, 0, %Title%, %A_Space% Неверно задан путь к ERUNT.exe`nПроверьте НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ в скрипте
ExitApp ; закончить скрипт
}
If Day_Sub_Dir = 1 ; если указано создавать подпапку с именем дня недели, то...
{
FormatTime, Cur_Day,, dddd ; получаем сегодняшний день недели
StringUpper, Cur_Day, Cur_Day, T ; делаем первую букву дня недели заглавной (мне так красивей)
Dest_Path = %Dest_Path%\%Cur_Day% ; добавляем день недели к целевой папке
}
IfNotExist, %Dest_Path% ; если целевой папки не существует, то...
{
FileCreateDir, %Dest_Path% ; создать целевую папку
If ErrorLevel != 0 ; если создать папку не удалось, то...
{
MsgBox, 48, %Title%, Не могу создать папку:`n"%Dest_Path%" ; показать сообщение
ExitApp ; закончить скрипт
}
}
; ПРОВЕРЯЕМ, НУЖНО ЛИ СОЗДАВАТЬ РЕЗЕРВНУЮ КОПИЮ ИЛИ ОНА СЕГОДНЯ УЖЕ БЫЛА СОЗДАНА
If ( FileExist( Dest_Path "\ERDNT.INF" ) AND Only_Once_In_Day = 1 )
{ ; если бэкап уже существует и указано сохранять только раз в день, то...
FileReadLine, Backup_Date, %Dest_Path%\ERDNT.INF, 2 ; читаем вторую строку этого файла (там написана дата)
FormatTime, Cur_Date,, dd.MM.yyyy ; получаем текущую дату в том же формате
If InStr( Backup_Date, Cur_Date ) ; если даты совпадают, то...
ExitApp ; закончить скрипт
}
; ФОРМИРУЕМ КОМАНДНУЮ СТРОКУ
Cmd_String = "%Dest_Path%" ; берем путь в кавычки (на случай, если в нем есть пробелы)
If Sysreg = 1 ; если указано сохранять системный реестр, то...
Cmd_String = %Cmd_String% sysreg ; добавить команду в командную строку
If Curuser = 1 ; если указано сохранять реестр текущего пользователя, то...
Cmd_String = %Cmd_String% curuser ; добавить команду в командную строку
If Otherusers = 1 ; если указано сохранять загруженный реестр других пользователей, то...
Cmd_String = %Cmd_String% otherusers ; добавить команду в командную строку
If Noconfirmdelete = 1 ; если указано не подтверждать удаление уже существующих резервных копий, то...
Cmd_String = %Cmd_String% /noconfirmdelete ; добавить команду в командную строку
If Noprogresswindow = 1 ; если указано не показывать окно прогресса выполнения, то...
Cmd_String = %Cmd_String% /noprogresswindow ; добавить команду в командную строку
; БЭКАПИМ РЕЕСТР
RunWait, %ERUNT_Path% %Cmd_String% ; запускаем бэкап реестра (и ждем окончания его работы)
If Final_Msg = 1 ; если указано показывать финальное сообщение, то...
MsgBox, 0, %Title%, Резервное копирование реестра завершено.`n`nРеестр сохранен в папку:`n`n"%Dest_Path%" ; показать сообщение