mit dieser Procedure klappt es bei mir auch unter Win2000 ( habe ich noch woanderst gefunden ).
Es ähnelt sich sehr mit der vorherigen Ausführung, ist aber eben nicht das Gleiche. Was da genau in jeder Zeile passiert verstehe ich ehh nicht.
Code: Alles auswählen
#EWX_LOGOFF = 0
#EWX_SHUTDOWN = 1
#EWX_REBOOT = 2
#EWX_FORCE = 4
#EWX_POWEROFF = 8
Procedure Shutdown( flags.l )
Privileges.TOKEN_PRIVILEGES
OpenProcessToken_(GetCurrentProcess_(), 40, @hToken)
Privileges\PrivilegeCount = 1
Privileges\Privileges[0]\Attributes = #SE_PRIVILEGE_ENABLED
LookupPrivilegeValue_(0, "SeShutdownPrivilege", @Privileges\Privileges[0]\Luid)
AdjustTokenPrivileges_(hToken, 0, @Privileges, 0, 0, 0)
CloseHandle_(hToken)
ExitWindowsEx_(flags, 0)
EndProcedure
;Beispiel: ACHTUNG Speichern vorm ausprobieren!!!
Shutdown( #EWX_REBOOT ); oder eben andere Konstanten von oben angeben, je nach Wunsch und Absicht