Без админских прав практически не реально, удалить exe-file пока запущен процесс. С ними еще можно помучать ядро, поковыряться в файловой таблице. Только вот нужно ли это... Вообще наиболее приемлемым является способ внедрения DLL, которая удалит файл когда процесс завершится.
ExitProcess А так, вроде где-то здесь на сайте в статьях читал про отключение защиты исполняемого в данный момент файла... Если не ошибаюсь то об этом писал MS-REM...
Если ты пишешь деинсталлятор и нужно удалить его файл, попробуй MoveFileEx с параметром MOVEFILE_DELAY_UNTIL_REBOOT, - после перезагрузки файла не будет! Каталоги тоже удаляются. Удачи!