Pull to refresh

Удаление запущенного .exe с помощью потоков NTFS

Reading time1 min
Views13K
Про потоки NTFS на хабре писали уже не раз, я же покажу, как с их помощью преодолеть одно ограничение Windows по работе с процессами. Тут эта тема в одном посте уже поднималась, но как-то вскользь. Я же хочу обратить на неё внимание.

Вы наверное знаете, что .exe файл работающего процесса невозможно удалить, пока он работает. Можно перемещать файл, но только в пределах своего раздела. С помощью потоков NTFS всё таки можно удалить файл процесса во время его работы.

Делается это буквально тремя строчками в командной строке.
Запускаете cmd.exe, переходите в каталог на NTFS-раздел.

type %windir%\system32\notepad.exe > zz:notepad.exe
start E:\tmp\zz:notepad.exe
del zz


Первая строчка копирует Блокнот на NTFS раздел в виде потока «notepad.exe» файла zz. Пустой файл zz создастся автоматически.
Вторая строчка запускает этот поток на выполнение, как если бы это был обычный .exe файл.
Третья строчка удаляет пустой файл zz, а вместе с ним исчезают и его потоки

Процесс остаётся работать. Можете запустить taskmgr.exe и полюбоваться на продолжающий работать процесс zz:notepad.exe.

Практическое применение этого? Например, в инсталляторах. Они любят оставлять во временных файлах кучу exe-шников. Инсталляторы могли бы запускать свои исполняемые файлы таким вот образом, тогда с удалением временных .exe файлов не будет проблем.

Программа для работы с альтернативными файловыми потоками NTFS.
Tags:
Hubs:
+4
Comments7

Articles

Change theme settings