I'm not dead... yet.
Обнаружил веселый баг в винде. Допустим на компутере A есть каталог C:\very_long_directory_name\
Подключаем этот каталог на компутере Б как сетевой диск X:
Как известно, максимальный путь к файлу в винде не может превышать 260 символов. Теперь создаем на сетевом диске файл с максимально возможным длинным именем, чтобы он укладывался в ограничение.
Все! Компьютер А ничего не сможет сделать с этим файлом: ни считать, ни удалить, ни переименовать.
Подключаем этот каталог на компутере Б как сетевой диск X:
Как известно, максимальный путь к файлу в винде не может превышать 260 символов. Теперь создаем на сетевом диске файл с максимально возможным длинным именем, чтобы он укладывался в ограничение.
Все! Компьютер А ничего не сможет сделать с этим файлом: ни считать, ни удалить, ни переименовать.
чтобы ограничение 260 символов "раздвинуть" до 32К символов, нужно дописать UNC-префикс из 4 символов \\?\
если вы пишете свою программу на С или Паскале и работате с файловой системой через WinAPI, то нужно добавить \\?\ к началу имени файла, перекодировать имя файла в UTF-16 и вызвать соответствующую W-функцию (напр, DeleteFileW вместо обычной DeleteFileA)
если вам просто нужно удалить один файл прямо сейчас и с минимумом писанины, то создайте файл myfile.vbs с одной строкой внутри
CreateObject("Scripting.FileSystemObject").DeleteFile "\\?\C:\Very\Long\Path\To\Your\File"
и запустите этот файл
cscript.exe myfile.vbs
только что проверил - оба метода работают даже на Win XP