скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Power off (Убивает процессы)



Автор: DeMoN-777

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Power off (Убивает процессы)

Зависимости: Windows
Автор:       DeMoN-777, DeMoN-777@yandex.ru, Санкт-Петербург
Copyright:   @
Дата:        21 июня 2002 г.
***************************************************** }

procedure Shutdown2;
var
  hToken: THandle;
  tkp: _TOKEN_PRIVILEGES;
  DUMMY: PTokenPrivileges;
  DummyRL: Cardinal;
begin
  DUMMY := nil;
  if not OpenProcessToken(
    GetCurrentProcess(),
    TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
    hToken
    ) then
    raise TShutdownEx.Create('OpenProcessToken failed');

  if (not LookupPrivilegeValue(nil, 'SeShutdownPrivilege',
    tkp.Privileges[0].Luid)) then
    raise TShutdownEx.Create('LookupPrivilegeValue failed');

  tkp.PrivilegeCount := 1;
  tkp.Privileges[0].Attributes := $0002; //SE_PRIVILEGE_ENABLED = $00002

  AdjustTokenPrivileges(hToken, FALSE, tkp, 0, Dummy, DummyRL);

  if (GetLastError() <> ERROR_SUCCESS) then
    raise TShutdownEx.Create('AdjustTokenPrivileges failed');

  if (not ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0)) then
    raise TShutdownEx.Create('ExitWindowsEx failed');
end;





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook