пятница, 27 июля 2018 г.

Path Too Long (слишком длинный путь) в Windows: кто виноват и что делать?

Практически каждый пользователь Windows рано или поздно сталкивается с ошибкой "слишком длинный путь" (path too long). Ошибка эта возникает при работе с файлами или папками, у которых полный путь превышает значение в 260 символов.
Напомню, что полный путь включает в себя букву диска, двоеточие, обратный слэш, имена компонентов (файл, директория) разделенные слешем и завершающий пустой символ (NUL). Выглядит полный путь примерно так:
C:\directory\subdirectory\filename
Соответственно, если сумма всех компонентов пути больше 260 символов, то путь считается слишком длинным. Большинство приложений Windows не умеют работать с такими путями и при обращении к файлу\папке выдадут примерно такое сообщение:

Что интересно, значение в 260 символов обусловлено значением MAX_PATH Win32 API. У файловой системы NTFS максимальная длина пути "немного" больше и составляет  32767 символов. Для обхода ограничений Win32 API некоторые приложения используют формат UNC, указывая абсолютный путь с префиксом \\?\, например так:
\\?\C:\directory\subdirectory\filename
В Windows 10 (начиная с версии 1607) появилась возможность отключить проверку MAX_PATH и использовать длинные пути без префикса \\?\ . Сделать это можно двумя способами — с помощью групповых политик или путем редактирования реестра. Подробнее см. в статье.

А теперь огромная ложка дёгтя!

Проводника Windows всё вышеописанное не касается! 😡 На дворе конец июля 2018, у меня установлена 64-битная Windows 10 Корпоративная 2016 с долгосрочным обслуживанием версии 10.0.14393 Сборка 14393. Проводник Windows как ругался на длинные пути, так и продолжает ругаться, несмотря на применение всех рекомендаций, описанных выше. Это бред и позор индийских разработчиков или каких там еще, которые работают на Microsoft.
Приходиться пользоваться обходным решением - бесплатной утилитой стороннего разработчика Long Path Fixer. Обзор этой утилиты можно прочитать здесь.


Комментариев нет: