;ExitWindowsEx auch mit NT und XP nutzen ;################################################# ;Andreas Miethe * August 2002 ;################################################# ;ExitWindowsEx funktioniert unter NT und XP ;nur, wenn das aufrufenden Programm das ;Recht besitzt den Rechner neu zu starten bzw. ;auszuschalten. ;Das muss Windows aber erstmal mitgeteilt werden ! ;Erst wenn diese Vorarbeiten erledigt sind, kann ;ExitWindowEx aufgerufen werden ! ;################################################# ;ab PB 4.X ;################################################# Procedure Shutdown(par.l) ;Prozess-Token ermitteln OpenProcessToken_(GetCurrentProcess_(),40, @hToken) LookupPrivilegeValue_(0,"SeShutdownPrivilege",@Privileges.LUID);LUID auslesen PToken.TOKEN_PRIVILEGES PToken\PrivilegeCount = 1 ;Anzahl der Privileges = 1 PToken\Privileges\Luid\LowPart = Privileges\LowPart PToken\Privileges\Luid\HighPart = Privileges\HighPart PToken\Privileges\Attributes = #SE_PRIVILEGE_ENABLED AdjustTokenPrivileges_(hToken, 0, PToken, 0, 0, 0);Privileges setzen CloseHandle_(hToken);Token wird nicht mehr benoetigt ExitWindowsEx_(par, 0);hier kann jetzt Windows beendet oder neugestartet werden. EndProcedure Shutdown(#EWX_REBOOT) End ; IDE Options = PureBasic v4.01 (Windows - x86) ; CursorPosition = 28 ; Folding = - ; UseIcon = K:\Pure-Basic\Symbol1.ico ; Executable = K:\Pure-Basic\ShutDown\ShutNT.exe