Hmm..
Alternative:
MoveFileEx(PChar(YourFileToDelete), nil, MOVEFILE_DELAY_UNTIL_REBOOT)
Erzeuge deine Dateien ganz normal und rufe dann direkt hierfür die obrige MoveFileEx funktion auf.
Nun dein ShellExecute und die Datei kann geöffnet/Angezeigt werden.
Beim nächsten Reboot von Windows werden diese Dateien gelöscht.
Ist nicht schön, dass dies erst beim Reboot erfolgt, aber immerhin..