|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
http://habrahabr.ru/blogs/windows/117083/
Не совсем шутдаун, а ребут. Но если доработать напильником... |
#17
|
|||
|
|||
а как это в SuperFast Shutdown сделано?
|
#18
|
||||
|
||||
Не сочтите за оффтоп , но могу ли я поинтересоваться , зачем всё сие действо ?
|
#19
|
||||
|
||||
Код:
const ShutdownNoReboot = 0; ShutdownReboot = 1; ShutdownPowerOff = 2; function NtShutdownSystem(SHUTDOWN_ACTION: DWORD): DWORD; stdcall; external 'ntdll.dll'; function EnableShutdownPrivledges: Boolean; var hCurrentProcess: THandle; hTokenHandle: THandle; tp: _TOKEN_PRIVILEGES; PreviousState: _TOKEN_PRIVILEGES; ReturnLength: Cardinal; begin hCurrentProcess:=GetCurrentProcess; if OpenProcessToken(hCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hTokenHandle) then begin if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid) then begin tp.PrivilegeCount:=1; tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED; if AdjustTokenPrivileges(hTokenHandle, False, tp, SizeOf(_TOKEN_PRIVILEGES), PreviousState, ReturnLength) then Result:=True else Result:=False; end else Result:=False; end else Result:=False; end; использование: Код:
EnableShutdownPrivledges; NtShutdownSystem(ShutdownReboot); Код:
EnableShutdownPrivledges; NtShutdownSystem(ShutdownPowerOff); Пишу программы за еду. __________________ |