Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бэкап и восстановление реестра. Как восстановить? 
V
    Опции темы
gm44
Дата 13.1.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.1.2010

Репутация: нет
Всего: нет



Не работает восстановление из файла. Делаю под админом, ошибки не выдает, но восстановление не работает.

Код, который сохранит ветку реестра в файл:
============
Код

var
   hToken: THandle;
   tkp: Token_Privileges;
   ReturnLength: Cardinal;
   hKeyToSave: HKEY;
   dw: cardinal;
begin
 if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken) then
  begin
   LookupPrivilegeValue(nil,'SeBackupPrivilege', tkp.Privileges[0].Luid);
   tkp.PrivilegeCount:=1;

   tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
   AdjustTokenPrivileges(hToken, false, tkp, sizeof(TOKEN_PRIVILEGES), nil, ReturnLength);
   end;

 RegCreateKeyEx(HKEY_LOCAL_MACHINE,
                    'SOFTWARE',//ключ, который бэкапим
                    0,
                    nil,
                    REG_OPTION_BACKUP_RESTORE,
                    KEY_QUERY_VALUE,
                    nil,
                    hKeyToSave,
                    @dw);

 RegSaveKey(hKeyToSave,'имя_файла_в_который_бэкапим.txt', nil);
 RegCloseKey(hKeyToSave);
end;
=========================
код, совершающий восстановление из файла :
var
   hToken: THandle;
   tkp: Token_Privileges;
   ReturnLength: Cardinal;
   hKeyToSave: HKEY;
   dw: cardinal;
begin
 if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken) then
  begin
   LookupPrivilegeValue(nil,'SeRestorePrivilege', tkp.Privileges[0].Luid);
   tkp.PrivilegeCount:=1;

   tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
   AdjustTokenPrivileges(hToken, false, tkp, sizeof(TOKEN_PRIVILEGES), nil, ReturnLength);
   end;

 RegCreateKeyEx(HKEY_LOCAL_MACHINE,
                    'SOFTWARE',//ключ, который бэкапим
                    0,
                    nil,
                    REG_OPTION_BACKUP_RESTORE,
                    KEY_QUERY_VALUE,
                    nil,
                    hKeyToSave,
                    @dw);

 RegLoadKey(hKeyToSave,'имя_файла_в_который_бэкапим.txt', nil);
 RegCloseKey(hKeyToSave);
end;


M
Rrader
Пользуйтесь подсветкой кода!


Это сообщение отредактировал(а) Rrader - 14.1.2010, 06:06
PM MAIL   Вверх
Демо
Дата 13.1.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 6
Всего: 50



gm44, 
Из утилиты Regedit пробовал то же самое проделать?


--------------------
    
PM MAIL ICQ Skype   Вверх
gm44
Дата 13.1.2010, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.1.2010

Репутация: нет
Всего: нет



Пробовал. Через Regedit нормально отрабатывает. Думаю с кодом проблема...
PM MAIL   Вверх
Демо
Дата 13.1.2010, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 6
Всего: 50



В наше время нужно бы ещё версию ОС писать и разрядность-)

Это сообщение отредактировал(а) Демо - 13.1.2010, 22:16


--------------------
    
PM MAIL ICQ Skype   Вверх
gm44
Дата 13.1.2010, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.1.2010

Репутация: нет
Всего: нет



Windows XP SP3 32бит
PM MAIL   Вверх
Демо
Дата 13.1.2010, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 6
Всего: 50



Код

The calling process must have the SE_RESTORE_NAME and SE_BACKUP_NAME privileges on the computer in which the registry resides. 


Добавлено через 2 минуты и 57 секунд
Вот ещё:
http://support.microsoft.com/kb/257176


--------------------
    
PM MAIL ICQ Skype   Вверх
gm44
Дата 14.1.2010, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.1.2010

Репутация: нет
Всего: нет



У меня с английским туго. Но если я правильно перевел, то написано что нужно дать привилегии REG_OPTION_BACKUP_RESTORE. Но я и так вроде устанавливаю эти привилегии? Или я неправильно понял?
PM MAIL   Вверх
Демо
Дата 14.1.2010, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 6
Всего: 50



Цитата(gm44 @  14.1.2010,  00:05 Найти цитируемый пост)
REG_OPTION_BACKUP_RESTORE



При получении привилегий с помощью AdjustTokenPrivileges:

Цитата(Демо @  13.1.2010,  23:05 Найти цитируемый пост)
SE_RESTORE_NAME and SE_BACKUP_NAME 




--------------------
    
PM MAIL ICQ Skype   Вверх
gm44
Дата 14.1.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.1.2010

Репутация: нет
Всего: нет



Спасибо! Работает.

Это сообщение отредактировал(а) gm44 - 16.1.2010, 22:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.