Источник: [Ссылки могут видеть только зарегистрированные и активированные пользователи]
kurinmaksim
23.07.2013, 13:29
2 минуса
1. При удалении файла виден консоль от bat файла (палево)
2. Не работает, если в пути к файлу есть русские буквы.
Tr0y
23.07.2013, 16:58
2 минуса
1. При удалении файла виден консоль от bat файла (палево)
2. Не работает, если в пути к файлу есть русские буквы.
А еще bat файлы могут быть отключены в системе как "выполняемые" и батник тупо не запустится =)
Вариантов самоудаления - масса, самый простой- батник, посложнее - рядом с прогой таскать "модуль обслуживания", ну вроде удаления/обновления и всякого такого и управлять им через строку запуска ака консолько.
Ну есть еще извращения с планировщиком задач.
Извеняюсь забыл что он работает только под старыми ОС
avi2011class
15.10.2013, 22:46
При удалении файла виден консоль от bat файла (палево)
добавим в батник первой строчкой "@echo off" (без кавычек) и проблема решена.
Tr0y
16.10.2013, 08:18
winexec(PAnsiChar('cmd.exe /c "' + ansistring(BatchFileName)+ '"'),sw_hide); // "@echo off" можно было не писать, но можно и перестраховаться, обратите на параметр "sw_hide"
winexec не рекомендую юзать лучше ShellExecute
W0T-SEllER
13.12.2013, 22:06
проще через DeleteDir есть такая функция кому нужна в лс
Sinyss
13.12.2013, 22:59
проще через DeleteDir есть такая функция кому нужна в лс
Нельзя удалить файл который используется...
twice
17.12.2013, 08:44
Еще один вариант - инжект потока в чужой процесс. Поток ждет завершения исполнения файла, после чего его удаляет, например через ZwSetInformationFile с последним параметром FileDispositionInformation и ZwClose.
Flayer-Soft
27.12.2013, 21:21
Соб-но, удалить файл который на данный момент запущен нельзя. Немного переделывал свою защиту, думал о автоматическом удалении.
Построил для себя задачу:
- Создать батник
- Открыть батник
- С помощью батника вырубаем процесс.
- Удаляем.