12:16

I'm not dead... yet.
Обнаружил веселый баг в винде. Допустим на компутере A есть каталог C:\very_long_directory_name\

Подключаем этот каталог на компутере Б как сетевой диск X:

Как известно, максимальный путь к файлу в винде не может превышать 260 символов. Теперь создаем на сетевом диске файл с максимально возможным длинным именем, чтобы он укладывался в ограничение.
Все! Компьютер А ничего не сможет сделать с этим файлом: ни считать, ни удалить, ни переименовать.

Комментарии
03.11.2016 в 23:03

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
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
04.11.2016 в 22:36

I'm not dead... yet.
Спасибо! правда мне это уже неактуально, но может в будущем пригодится...