Перезагрузка в WinNT (не убивает процессы)

Советы » Компьютер » Перезагрузка в WinNT (не убивает процессы)

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Перезагрузка в WinNT (не убивает процессы)

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

procedure

reboot; 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_REBOOT, 0)) then

raise

TShutdownEx.Create('ExitWindowsEx failed'); end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2023 - All Rights Reserved - www.delphirus.com