Code: |
procedure NTShutdown; var TokenHandle: Cardinal; RetLength: Cardinal; TP: TTokenPrivileges; begin OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TokenHandle); if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', TP.Privileges[0].Luid) then begin TP.PrivilegeCount := 1; TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; RetLength := 0; if AdjustTokenPrivileges(TokenHandle, FALSE, TP, 0, nil, RetLength) then begin if not SetProcessShutdownParameters($4FF, SHUTDOWN_NORETRY) then begin MessageBox(0, 'Shutdown failed', nil, MB_OK or MB_ICONSTOP); end else begin ExitWindowsEx(EWX_FORCE or EWX_SHUTDOWN, 0); end; exit; end; end; MessageBox(0, 'Access denied', nil, MB_OK or MB_ICONSTOP); end; |
Power off
Power off
Содержание материала
Страница 4 из 7
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!