Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Сохранение и загрузка ключей реестра   Найти похожие ветки 

 
Sting   (2004-07-08 23:01) [0]

Доброг времени суток.
У меня такая проблема.
Есть функции для работы с реестром SaveKey, LoadKey.
Но они не работают должным образом. Насколько я понял, в ХР необходимо получить соответствующие привилегии для их использования. Функция SaveKey сохраняет ветвь реестра в файл, если была установлена привилегия SeBackupPrivilege.
Однако LoadKey не восстанавливает информацию из созданного файла. Для ее восстановления я использую привилегию SeRestorePrivilege. Система выдает такое сообщение: "потребовалось восстановление одного из файлов данных системного рееста с помощью журнала или дополнительной копии. Восстановление произошло успешно." И в реестре никаких изменений не происходит.
Кто-нибудь может помочь с этим?


 
Cobalt ©   (2004-07-09 01:56) [1]

Чё?!
Код давай!!!
:)


 
Sting   (2004-07-09 03:05) [2]

Установка привилегии:

function SetPrivilege(sPrivilegeName: string; bEnabled: boolean): boolean;
var
TPPrev,
TP: TTokenPrivileges;
Token: THandle;
dwRetLen: DWord;
begin
 Result := False;
 try
 OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token);
 TP.PrivilegeCount := 1;
 if (LookupPrivilegeValue(nil, PChar(sPrivilegeName),TP.Privileges[0].LUID)) then
 begin
   if (bEnabled) then
   TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
   else TP.Privileges[0].Attributes := 0;
   dwRetLen := 0;
   Result := AdjustTokenPrivileges(Token, False, TP, SizeOf(TPPrev),
   TPPrev, dwRetLen);
 end;
 finally
   CloseHandle(Token);
 end;
end;

Сохранаю так:

var
 x   : TRegistry;
 key : string;
begin
 SetPrivilege("SeBackupPrivilege", True);

 key:="Некоторый ключ";
 x:=tregistry.Create;
 x.RootKey:=HKEY_LOCAL_MACHINE;
 x.SaveKey(key,"c:\tmp1");
 x.Free;
end;

Удаляю ключ. Пытаюсь восстановить так:

var
 x   : TRegistry;
 key : string;
begin
 SetPrivilege("SeRestorePrivilege", True);

 key:="Некоторый ключ";
 x:=tregistry.Create;
 x.RootKey:=HKEY_LOCAL_MACHINE;
 x.LoadKey(key,"c:\tmp1");
 x.Free;
end;

И ничего не получается



Страницы: 1 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.138 c
14-1091806756
Сергега
2004-08-06 19:39
2004.08.22
Куда пойти работать летом?


14-1090698815
Marser
2004-07-24 23:53
2004.08.22
Уезжаю!


9-1082036082
istemy
2004-04-15 17:34
2004.08.22
Как сделать так, чтобы герой не проходил стены?


1-1091775212
student__
2004-08-06 10:53
2004.08.22
подсчет секунд


3-1090913876
Nikolai_S
2004-07-27 11:37
2004.08.22
Проблема с версиями MDAC