Главная страница
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.023 c
3-1091024994
MORA
2004-07-28 18:29
2004.08.22
корректно ли я использую транзакции?


6-1088090396
Dextor
2004-06-24 19:19
2004.08.22
Отправка звука


1-1091807061
Spike
2004-08-06 19:44
2004.08.22
Подскажите, как скопировать в Clipboar русский текст...


1-1092070645
кш
2004-08-09 20:57
2004.08.22
мастера!!! помогите!!! как выполнить команду командной строки,


14-1091371342
Cerberus
2004-08-01 18:42
2004.08.22
Dos