Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: август 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Как завершить сеанс работы или перезагрузить Windows

Для этого нам потребуются определённые привелегии:


 function SetPrivilege(aPrivilegeName: string;
   aEnabled: boolean): boolean;
 var
   TPPrev,
     TP: TTokenPrivileges;
   Token: THandle;
   dwRetLen: DWord;
 begin
   Result := False;
   OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES
     or TOKEN_QUERY, @Token);
 
   TP.PrivilegeCount := 1;
   if (LookupPrivilegeValue(nil, PChar(aPrivilegeName),
     TP.Privileges[0].LUID)) then
   begin
     if (aEnabled) 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;
   CloseHandle(Token);
 end;
 
 function WinExit(iFlags: integer): boolean;
 //   возможные флаги:
 //   EWX_LOGOFF
 //   EWX_REBOOT
 //   EWX_SHUTDOWN
 begin
   Result := True;
   if (SetPrivilege('SeShutdownPrivilege', true)) then
   begin
     if (not ExitWindowsEx(iFlags, 0)) then
     begin
       Result := False;
     end;
     SetPrivilege('SeShutdownPrivilege', False)
   end
   else
   begin
     Result := False;
   end;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS