Um Luckies Vorschlag mal weiter zu spinnen:
Windows sendet vor dem Herunterfahren ein WM_QUERYENDSESSION an alle laufenden Programme. Auf diese Message könnte man z.B. reagieren, und in dieser Prozedur ein sleep(20000) einbauen und dann erst das "OK" an Windows zurückzugeben. Dürfte zur Folge haben, dass Windows beim runterfahren anfängt zu meckern und das Fenster "Diese Anwendung reagiert nicht - Sofort beenden/Abbrechen" erscheint.
Besser wäre imho, beim Erhalt von WM_QUERYENDSESSION ein "Nö, ich mag nicht runterfahren" zu antworten, so dass Windows den Shutdown abbricht. Dann kann dein Programm ein bissel was tun, und anschließend den Shutdown selbst anstoßen - wobei man sich natürlich merken muss, dass das dann kommende WM_QUERYENDSESSION dadurch bedingt ist, dass man selbst herunterfahren möchte, um dann entsprechend das OK dafür zu geben.
Natürlich können dann immer noch andere Programme das Herunterfahren behindern

We are, we were and will not be.