Проверил на живой. Вообще не увидел месседж-бокса. Система после загрузки, ушла на перезагрузку. После нее, зашел на С и увидел, что finish.exe удален, а cleanup.txt остался не переименнованным. Запуск вручную - все проходит штатно.
Уфф, все отработало из-под автозагрузки после следующей модификации кода в предыдущем посте.
Код:

;считывание из cleanup.txt времени отработки прогрессбара и передача этого значения в переменную $line
$line = FileReadLine(@ScriptDir & "\cleanUp.cmd", 2)
Итого, рабочий скрипт:
Код:

;Предотвращение появление процесса-клона
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
;Блокирование ПК
#NoTrayIcon
#include <BlockInputEx.au3>
Opt("WinWaitDelay", 1)
$sTaskMgr_Title = "[CLASS:#32770;REGEXPTITLE:(Диспетчер задач|Task Manager)]"
;Disable Task Manager
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD", "1")
_BlockInputEx(1)
;считывание из cleanup.txt времени отработки прогрессбара и передача этого значения в переменную $line
$line = FileReadLine(@ScriptDir & "\cleanUp.cmd", 2)
$iPID = Run(@COMSPEC & ' /c %SYSTEMDRIVE%\cleanup.cmd', "", @SW_HIDE)
While ProcessExists($iPID)
$Title = "Пожалуйста, подождите..." ; Заголовок
$SubTitle = "Происходит финализация установки" ; Суб-заголовок
$Message = "После удаления мусора, оставшегося от установки" & @CRLF ; Сообщение. Записано в таком виде для удобства
$Message &= "XP и создания/перемещения ярлыков, Система" & @CRLF
$Message &= "будет перезагружена. Осталось времени: "
$Time = $line ; Время здесь хранится в миллескундах. 1 с = 1000 мс
$Sleep = 0.01 * 100000 ; 10 мс. Меньше 1 мс ставить не рекомундуется. Впрочем, тут и 100 мс хватает.
$Timer = TimerInit() ; Инициализация таймера.
ProgressOn($Title, $SubTitle, $Message & $Time) ; Параметры: заголовок, суб-заголовок, сообщение. Включаем окно прогресса.
While TimerDiff($Timer) < $Time ; Пока прошло времени меньше чем нужно - повторять:
ProgressSet(TimerDiff($Timer) / $Time * 100, $Message & Round(($Time - TimerDiff($Timer)) / 1000, 0) & " секунд")
; ProgressSet ( percent [, "subtext" [, "maintext"]] )
; Параметр 1: процент прогресса. Прошедшее время делим на требуемое и умножаем на 100
; Параметр 2: сообщение. Стандартное, как в перменной $Message плюс оставшееся время округлённое до целых
; Параметр 3: опциональный. Здесь не используется.
Sleep($Sleep); Подожать $Sleep мс
WEnd
WEnd
ProgressSet(100, "ПЕРЕЗАГРУЗКА! УДАЧНОЙ РАБОТЫ!") ; Выводим последнее сообщение.
Sleep(3000) ; Чтобы было видно последнее сообщение.
;Enable Task Manager back
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD", "0")
; Функция самоудалениея скрипта
#Include <File.au3>
Func _ScriptDestroy()
$sTemp = _TempFile(@TempDir, '~', '.bat')
$sPath = FileGetShortName(@ScriptFullPath)
$hFile = FileOpen($sTemp, 2)
FileWriteLine($hFile, '@echo off')
FileWriteLine($hFile, ':loop')
FileWriteLine($hFile, 'del ' & $sPath)
FileWriteLine($hFile, 'if exist ' & $sPath & ' goto loop')
FileWriteLine($hFile, 'del ' & $sTemp)
FileClose($hFile)
Run($sTemp, '', @SW_HIDE)
EndFunc ;==>_ScriptDestroy
_ScriptDestroy()
Sleep(1000)
Shutdown(2)