Ten interfejs użytkownika należy do Winlogon, który ładuje i wywołuje bibliotekę DLL Windows Update podczas sekwencji zamykania. Tekst pochodzi z usługi Windows Update za pośrednictwem wywołania zwrotnego.
Winlogon wywołuje różne funkcje wewnętrzne w odpowiedzi na zmiany stanu sesji (logowanie, wylogowanie, uruchomienie, zamknięcie itd.). W przypadku, gdy badałem, w XP jedną z funkcji wywoływanych podczas zamykania jest WUNotify. Dynamicznie ładuje wuaueng.dll, wywołuje GetProcAddress na porządek 5 (WUAutoUpdateAtShutdown) i wywołuje tę funkcję z flagą bool i wskaźnikiem funkcji do StatusMessage2. WUAutoUpdateAtShutdown z kolei komunikuje się poza procesem z usługą Windows Update, aby wykonać swoją pracę, i używa StatusMessage2 do aktualizacji tekstu interfejsu użytkownika Winlogon („Instalowanie aktualizacji 1 z 10” itp.)
W wersjach wcześniejszych niż Vista można było utworzyć własną bibliotekę DLL powiadomień Winlogon, a przy użyciu odpowiednich kluczy rejestru Winlogon załadowałby moduł i wywołał eksport w celu uzyskania interesujących cię powiadomień. Innym sposobem na zrobienie tego, także wcześniejszym niż Vista, było napisz własną bibliotekę GINA DLL.
W dzisiejszych czasach możesz uruchamiać się przy wyłączaniu za pomocą powiadomienia serwisowego (chociaż nie masz tutaj dużo czasu) lub skryptu zamykającego GPO (który podlega ograniczeniom limitu czasu rejestru). Nie wiem, czy okno statusu Winlogon istnieje, gdy te rzeczy działają, ale jeśli tak, możesz być w stanie wyszukać HWND i użyć SetWindowText bezpośrednio do zmiany komunikatu o stanie Winlogon. (Tak właśnie ostatecznie działa StatusMessage2. Chociaż może to być fajne ze skryptu zamykającego jako „dowodu koncepcji”, oczywiście nie jest to obsługiwane ani zalecane zachowanie).