СЕРВИСНЫЕ УСЛУГИ
СТУДИЯ В ЛИПЕЦКЕ

Советы · Windows · 5 минут

Windows упирается в длинный путь: почему одной настройки недостаточно

Почему LongPathsEnabled не исправляет все ошибки длинного пути: поддержка приложения, предел имени, временные файлы и безопасное сокращение структуры.
Microsoft Windows: пример дерева папок в Проводнике. Полный путь складывается из корня, всех уровней, имени и расширения; допустимая глубина зависит также от программы.

Microsoft Windows: пример дерева папок в Проводнике. Полный путь складывается из корня, всех уровней, имени и расширения; допустимая глубина зависит также от программы.
© Microsoft. Used with permission from Microsoft. · источник и условия использования · Microsoft screenshot permissions

Ограничение относится не только к файловой системе

Архив распаковывается с ошибкой длинного пути, хотя в Windows уже включены длинные имена. Или один инструмент копирует папку, а Проводник не может её переименовать. Такие ситуации возможны: поддержку пути определяют несколько слоёв.

Классический предел MAX_PATH равен 260 символам с учётом завершающего нулевого символа. Для ряда Unicode-интерфейсов Windows предусмотрены расширенные пути, но поведение программы зависит от используемых API и её настроек. NTFS, оболочка и конкретное приложение не являются одним механизмом. [1], [2]

Задача — установить самый строгий предел в вашей операции. Изменение одного параметра реестра не обновляет старый архиватор и не убирает собственный лимит базы данных или синхронизации.

Где может возникать ограничение
  1. Windows APIКакой способ обращения использует программа
  2. ПриложениеОбъявлена ли поддержка и нет ли своего предела
  3. Имя элементаДопустима ли длина отдельного компонента
  4. ОперацияДобавляются ли временные папки и суффиксы

Схема редакции «Мы из 90х».

Посчитайте полный путь, а не только имя файла

В длину входят буква диска или сетевой корень, разделители, все родительские каталоги, пробелы, имя и расширение. Короткий файл в глубоком дереве может не помещаться из-за длинной папки назначения.

Если полный путь уже известен из сообщения или описи, его строковую длину можно оценить без обращения к файлу:

PowerShell: замените строку своим полным путём

$targetPath = 'C:\Work\Проект\Архив\Документы\пример.txt'
$targetPath.Length

Это длина заданной строки, а не проверка существования или совместимости файла. У программы могут быть собственные правила и дополнительные временные имена. При работе с архивом учитывайте длину выбранного каталога распаковки плюс путь внутри архива.

Не путайте ошибку длины с недопустимым символом, зарезервированным именем или отсутствием разрешения. Полный текст отказа важнее общего предположения «Windows не любит длинные названия».

Проверьте настройку Windows и поддержку приложения

В командной строке запросите текущее значение:

Командная строка

reg query "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled

Отсутствие значения и значение 0 — разные исходные состояния, которые стоит сохранить перед изменением. Для снятия классического ограничения у соответствующих Win32-функций Microsoft указывает два условия: настройку Windows и объявление longPathAware в манифесте приложения. [1]

Проверьте документацию своей версии программы. Наличие современной Windows само по себе не добавляет отсутствующую поддержку в старый EXE. Настройка также не отменяет ограничения каждого облачного сервиса и формата данных.

Почему настройка могла не помочь
УсловиеЧто уточнить
Windows настроена, старый EXE не готовПоддержку longPathAware и используемые API
Проводник и другой инструмент ведут себя по-разномуОграничения оболочки
Длинно одно имяПредел компонента, а не общего пути
Сбой только при сохраненииВременные имена и собственные правила программы

Учебная таблица редакции.

Как включить длинные пути осознанно

Если нужное приложение поддерживает этот режим и изменение разрешено на вашем компьютере, в повышенной CMD можно выполнить:

Командная строка

reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f

На редакциях с редактором локальных групповых политик соответствующий параметр находится в «Конфигурация компьютера» → «Административные шаблоны» → «Система» → «Файловая система» → Enable Win32 long paths. На управляемом ПК настройка может задаваться централизованно.

Значение кэшируется процессами, поэтому для полного применения может потребоваться перезапуск программ и Windows. [1] После изменения проверяйте именно исходную задачу.

Для возврата восстановите прежнее значение. Если параметра изначально не было, убирают только созданное значение LongPathsEnabled, а не весь раздел FileSystem. Само изменение настройки не переименовывает уже созданные файлы.

Расширенный префикс не является универсальной кнопкой Проводника

Для поддерживающих его Unicode-API используется префикс расширенного пути. Примеры формы записи:

Примеры синтаксиса пути, не команды

\\?\D:\Archive\folder\file.txt
\\?\UNC\server\share\folder\file.txt

Такая запись передаёт путь с особыми правилами обработки. Она не предназначена для произвольной подстановки в любое окно программы и не применяется к относительному пути как обычное дополнение. Поддержка проверяется для конкретного API. [1], [2]

Даже расширенный полный путь не делает длину одного имени неограниченной. Для распространённых файловых систем действует отдельный предел компонента, часто 255 символов; точное значение зависит от файловой системы. Не пытайтесь исправить слишком длинное одно имя только добавлением префикса.

Сначала попробуйте более короткий рабочий корень

Для распаковки можно выбрать короткую отдельную папку вроде C:\Work вместо вложенного каталога в длинном профиле пользователя. Это уменьшает добавляемую часть пути без массового изменения имён внутри архива.

Для уже существующего дерева сначала сделайте проверяемую копию в короткое назначение поддерживающим длинные пути инструментом. При переименовании уровней учитывайте ссылки в проектах, базах и плейлистах. Несколько разных имён после грубого обрезания могут превратиться в одинаковые.

Проверяйте не только копирование, но и открытие файла той программой, ради которой перенос выполняется. Возможность создать путь одним инструментом не гарантирует совместимость рабочего приложения.

Проверяемый обходной путь
  1. Короткий кореньМеньше добавляемая часть назначения
  2. КопияИсходник пока сохранён
  3. СоставИмена и количество сопоставлены
  4. Рабочая программаФайлы действительно открываются и сохраняются

Схема редакции «Мы из 90х».

Если выбран Robocopy, учитывайте параметр /256: он отключает поддержку путей длиннее 256 символов. Его нельзя добавлять в такой сценарий по чужому шаблону, ожидая расширения возможностей. После копирования всё равно проверяется совместимость рабочего приложения. [4]

Отдельно проверьте синхронизацию и временные файлы

Локальный путь может включать название организации, библиотеки и пользователя, которых не видно в коротком веб-адресе. Поэтому файл, нормально открывающийся в браузере, способен оказаться проблемным после синхронизации.

Сервисы и приложения устанавливают собственные пределы. Microsoft описывает такие различия для OneDrive, SharePoint и Office отдельно. [3] Не заменяйте все эти правила одним числом 32 767.

Редактор может создавать рядом временный или блокировочный файл с дополнительными символами. При длине вплотную к пределу открытие иногда проходит, а сохранение — нет. Оставляйте запас для реально используемой программы и её операций.

Подтвердите результат на всей цепочке работы

Повторите распаковку или копирование, проверьте журнал ошибок и состав. Затем откройте несколько важных файлов из назначения и выполните нужную операцию сохранения на копии.

Если части дерева недоступны инструменту проверки, отсутствие их в списке не означает успешную копию. Сохраняйте исходный архив и не удаляйте исходник до проверки пропусков и конфликтов имён.

Итог удобно формулировать конкретно: какой путь укорочен, какая версия инструмента использована, какую настройку изменили и где файлы после этого работают. Это помогает отличить временное обходное решение от подтверждённой поддержки длинных путей всей системой приложений.

Made on
Tilda