12:16 

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

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

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

URL
Комментарии
2016-11-03 в 23:03 

CD_Eater
в опе ещё играет детство, а жить уже надо по-взрослому
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

2016-11-04 в 22:36 

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

URL
Комментирование для вас недоступно.
Для того, чтобы получить возможность комментировать, авторизуйтесь:
 
РегистрацияЗабыли пароль?

I'm proud of all my scars

главная