Здравствуйте yaroslav_v, Вы писали:
YV>Можно ли удалить *.exe файлу самого себя?
Напрямую — нет.
YV>Нужно для uninstall'era.
YV>Сейчас я копировал им его в TEMP, и запускал с парамeтром, тот удалял первый, а себя делал “удалять на перезапускe".
YV>В PE-заголовках есть флаг, что мол мы на сменном носителе, позволяет ли он удалить исполняемому файлу самого себя?
Нет.
YV>Есть ли какие-то другие способи удалить самого себя
До сих пор самый надежный способ, работающий во всех системах, — это запуск .bat файла, удаляющего основную программу, а затем и себя. Динамически формируется и запускается .bat-файл следующего содержания, после чего программа быстренько завершается, чтобы пользователь не успел заметить 100% использование процессора:
:loop
del "full-path-to-my-program.exe"
if exist "full-path-to-my-program.exe" goto :loop
del "full-path-to-this-file.bat"
В этот же .bat-файл можно добавить удаление директорий, в которых находилась основная программа.
На NT возможны более изощренные методы:
http://groups.google.com/groups?hl=en&selm=91q3cn%24v8n%241%40novalfsmtp1.novsvcs.net
http://groups.google.com/groups?hl=en&selm=c14f01c1a0f7%24f9b3f010%249ae62ecf%40tkmsftngxa02