Wenn ein Installer ein Reboot einleitet, ist der ExitCode dann sicher $EXITCLOSE_BYSUTDOWN, also 4?
Ja. Bevor Windows einen ShutDown einleitet, wird in der Registry vermerkt, ob und wie dieser ausgeführt werden soll. AutoIt liest diesen Wert aus und setzt das Makro @exitCode dann entsprechend.
Anstelle des externen Befehls Shutdown.exe kannst du auch AutoIt bemühen...
...doch so kannst du kein Timeout mit angeben! Die Timeouts kannst du aber in der Registry setzen bzw. ändern... siehe Anhang. Ist ein Key nicht vorhanden, verwendet Windows den Defaultwert.
Wenn du doch lieber die Shutdown.exe verwenden willst, weil du das Timeout explizit mit angeben willst, was in dem Fall dann auch zu empfehlen ist, sollte es nicht kleiner als der Defaultwert sein.
Vor Ausführung des Shutdowns (egal ob mit AutoIT oder externem Befehl) musst du die Funktion OnAutoItExitUnRegister("_Exit") ausführen, anderfalls wird die Funktion _Exit() erneut aufgerufen!
Process Constants - Auszug aus der Datei ..\Includes\AutoItConstants.au3
; Process Constants
; Indicates the type of shutdown
Global Const $SD_LOGOFF = 0 ; Logoff
Global Const $SD_SHUTDOWN = 1 ; Shutdown
Global Const $SD_REBOOT = 2 ; Reboot
Global Const $SD_FORCE = 4 ; Force
Global Const $SD_POWERDOWN = 8 ; Power down
Global Const $SD_FORCEHUNG = 16 ; Force shutdown if hung
Global Const $SD_STANDBY = 32 ; Standby
Global Const $SD_HIBERNATE = 64 ; Hibernate
Ist das mit dem BYSUTDOWN eigentlich ein Typo in der AutoIt Dokumentation und soll BYSHUTDOWN heißen?
OnAutoItExitRegister Constants - Auszug aus der Datei ..\Includes\AutoItConstants.au3
; OnAutoItExitRegister Constants
Global Const $EXITCLOSE_NORMAL = 0 ; Natural closing.
Global Const $EXITCLOSE_BYEXIT = 1 ; close by Exit function.
Global Const $EXITCLOSE_BYCLICK = 2 ; close by clicking on exit of the systray.
Global Const $EXITCLOSE_BYLOGOFF = 3 ; close by user logoff.
Global Const $EXITCLOSE_BYSUTDOWN = 4 ; close by Windows shutdown.
HKCU\Control Panel\Desktop
Key Data type Range Default value
AutoEndTasks REG_SZ 0|1 0
HungAppTimeout REG_SZ Milliseconds in decimal 5000 ( 5 seconds)
WaitToKillAppTimeout REG_SZ Milliseconds in decimal 20000 (20 seconds)
AutoEndTasks..................: https://technet.microsoft.com/de-de/library/cc978604.aspx
HungAppTimeout................: https://technet.microsoft.com/de-DE/library/cc978614.aspx
WaitToKillAppTimeout..........: https://technet.microsoft.com/de-DE/library/cc978624.aspx
HKLM\SYSTEM\CurrentControlSet\Control
Key Data type Range Default value
WaitToKillServiceTimeout REG_SZ Milliseconds in decimal 20000 (20 seconds)
WaitToKillServiceTimeout......: https://technet.microsoft.com/de-de/library/cc976045.aspx
Alles anzeigen
Alle Klarheiten beseitigt?