Вопрос Резервная копия реестра

Хамик

Старожил
Подскажите как сделать резервную копию ключей реестра? Резервную копию надо сохранить в реестре. Допустим имеем такой ключ HKEY_CURRENT_USER\SOFTWARE\APOSTOL надо его забекапить в HKEY_CURRENT_USER\SOFTWARE\APOSTOL_BACKUP, но при этом не удалять резервируемый ключ.
 
Как вариант:
Открываем нужный ключ, строим список всех подключей, копируем их на новое место, далее строим список параметров содержащихся в подключе, копируем и их на новое место.

З.Ы. Может для этого есть какая то спецфункция, но лично я такой не знаю
 
Как вариант:
Открываем нужный ключ, строим список всех подключей, копируем их на новое место, далее строим список параметров содержащихся в подключе, копируем и их на новое место.

З.Ы. Может для этого есть какая то спецфункция, но лично я такой не знаю
Это понятно. Как-бы программно все это сделать?
 
Можно все это попробовать сварганить на инно, или написать плагин. Но лично я не могу ни то ни другое, по независящим от меня причинам
 
Хамик, экспорт реестра делай. и reg файл в нужную папку.
 
Ну почему же. Экспорт. Сохранить reg. Подредактировать. Добавить в реестр. Все же проще.
 
С помощью RegQueryStringValue, RegGetSubkeyNames можно реализовать данный замысел?
 
Snoopak96, Спасибо! Пригодится! А в реестре никак не можно сделать бэкап?
 
Хамик,
что мешает сделать так?
Код:
 RegBackupTofile(HKEY_LOCAL_MACHINE, 'Software\1C', ExpandConstant('{app}\RegBackup.dat'), true);
 RegRestorefromfile(HKEY_LOCAL_MACHINE, 'Software\1C_BackUp', ExpandConstant('{app}\RegBackup.dat'), true);
 DeleteFile(ExpandConstant('{app}\RegBackup.dat'));
 
что мешает сделать так?
Вроде и работает, но постоянно несколько раз появляется сообщение "Ошибка чтения файла".
Код:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
RegBackupTofile(HKEY_LOCAL_MACHINE, 'Software\WinRAR', ExpandConstant('{app}\RegBackup.dat'), true);
RegRestorefromfile(HKEY_LOCAL_MACHINE, 'Software\WinRAR_BackUp', ExpandConstant('{app}\RegBackup.dat'), true);
DeleteFile(ExpandConstant('{app}\RegBackup.dat'));
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
RegBackupTofile(HKEY_LOCAL_MACHINE, 'Software\WinRAR_BackUp', ExpandConstant('{app}\RegBackup.dat'), true);
RegRestorefromfile(HKEY_LOCAL_MACHINE, 'Software\WinRAR', ExpandConstant('{app}\RegBackup.dat'), true);
DeleteFile(ExpandConstant('{app}\RegBackup.dat'));
RegDeleteKeyIncludingSubkeys(HKLM, 'Software\WinRAR_BackUp');
end;
 
RegEdit закрой у себя на компе, комментарии же написал, привилегия редактирования реестра не доступна если реестр открыт в RegEdit. После всех манипуляций открывай только редактор реестра.

Код:
if RegRestoreKey(phkResult, infile, 0) > 0 then MsgBox('Ошибка чтения файла', mbInformation, MB_OK);  //RegEdit при вызове должен быть закрыт иначе вернёт отказ в доступе
 
Хамик,
ну реестр занят каким-то процессом, так сделай:
Код:
if RegRestoreKey(phkResult, infile, 0) > 0 then MsgBox(inttostr(RegRestoreKey(phkResult, infile, 0)), mbInformation, MB_OK);
если массага выдаст "5" - то это отказ доступа. Другим может редактором реестр открыл.
 
2:ERROR_FILE_NOT_FOUND - не найден файл
3:ERROR_PATH_NOT_FOUND - не найден путь
реестр экспортируй в reg и сюда залей
нет, на анси у меня тоже пашет
ёмаё я ж на анси не проверял :lol: может по этому

 
Последнее редактирование:

Вложения

  • WinRAR.rar
    WinRAR.rar
    407 байт · Просмотры: 13
Назад
Сверху