Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Boa Soft

Компьютерный шаман


Сообщения: 2910
Благодарности: 956

Профиль | Сайт | Отправить PM | Цитировать


Цитата gabasov:
Все таки проще через API: »
Только не забываем еще привелегии получить на работу с реестром.

читать дальше »

Код: Выделить весь код
const
  SE_BACKUP_NAME              = 'SeBackupPrivilege';
  SE_RESTORE_NAME             = 'SeRestorePrivilege';

function AdjustRestorePrivileges: boolean;
var
  handle, ph: THandle;
  pid, n: DWORD;
  luid: TLargeInteger;
  priv: TTokenPrivileges;
  dummy: PTokenPrivileges;
  Err: DWORD;
begin
  if IsNtOs then 
   begin
    Result := False;
    pid := GetCurrentProcessId;
    ph := OpenProcess(PROCESS_ALL_ACCESS, False, pid);
    if not OpenProcessToken(ph, TOKEN_ADJUST_PRIVILEGES, handle) then 
      exit;
    if not LookupPrivilegeValue(nil, SE_RESTORE_NAME	, luid) then 
      exit;
    priv.PrivilegeCount := 1;
    priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    priv.Privileges[0].Luid := luid;
    dummy := nil;
    AdjustTokenPrivileges(handle, False, priv, 0, dummy^, n);
    Err := GetLastError;
    if Err <> ERROR_SUCCESS then 
      exit;
   end;
  Result := True;
end;

-------
Человеческая лень - главная движущая сила технического прогресса.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:14, 14-12-2008 | #855