Ja, auch zu diesem Problem liegt die Lösung bei MoveFileEx (wie schon in deinem anderen Thema). Bis Windows 2000 ging noch eine andere Methode:
http://assarbad.net/stuff/!export/delphi_deleteself.txt
http://assarbad.net/stuff/!export/c_deleteself.txt
Alternative Methoden sind:
1. eine
DLL welche zum Löschen markiert wird, aber vom aufrufenden Programm referenziert wird
2. eine Batch/NT-Skript-Datei
3. ein anderes Programm, welches das Löschen übernimmt (ist bei 2. ja auch der Fall)
...
...
...
Wie schon erwähnt, eine einfache Websuche hätte hier eine riesige Menge an Treffern ergeben.