Как убрать ограничение максимальной длины пути (260 символов) в Windows: пошаговое руководство

В Windows существует известное ограничение, которое ограничивает максимальную длину пути к файлу или папке до 260 символов. Проводник (File Explorer) и многие Win32-приложения не могут работать с путями, длина которых превышает 260 символов. Пользователи могут столкнуться с ошибками path too long при попытках создать, сохранить, скопировать или переместить файлы или папки с путем, превышающим допустимую длину.

Это ограничение связано не с файловой системой NTFS, а с Win32 API, который устанавливает максимально допустимую длину пути (MAX_PATH) равной 260 символам. Полный путь включает в себя букву диска (например, E:\), что занимает 3 символа; путь к папке; имя файла; а также невидимый завершающий символ NULL, занимающий 1 символ. Таким образом, фактическая максимальная длина имени файла или папки составляет 256 символов.

Ошибка "path too long" в WindowsОшибка "path too long" в Windows

С выпуском Windows 10 (версия 1607) и Windows Server 2016 была добавлена новая опция групповой политики, позволяющая включить поддержку длинных путей. По умолчанию она отключена. Чтобы включить поддержку длинных путей в Windows:

  1. Откройте локальный редактор групповой политики (gpedit.msc)
  2. Перейдите в раздел Computer Configuration -> Administrative Templates -> System -> Filesystem
  3. Включите политику Enable Win32 long paths Enable Win32 long paths - опция групповой политики в WindowsEnable Win32 long paths - опция групповой политики в Windows
  4. Чтобы изменения вступили в силу, перезагрузите компьютер.

Также поддержку длинных путей можно включить через реестр:

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

LongPathsEnabled - параметр реестраLongPathsEnabled - параметр реестра

Однако даже при включенной поддержке длинных путей в Windows это не гарантирует, что любое приложение сможет корректно работать с путями, превышающими стандартный лимит.

Главное — приложение должно быть специально разработано для поддержки длинных путей, а опция longPathAware должна быть активирована в его манифесте. Чтобы проверить, поддерживает ли конкретное приложение длинные пути, нужно заглянуть в его манифест и найти параметр longPathAware. Манифест может быть отдельным XML-файлом в папке с приложением, но чаще всего он встроен непосредственно в исполняемый файл (.EXE).

Самый простой способ изучить манифест EXE-файла — использовать инструмент Resource Hacker. Например, я открыл исполняемый файл Acrobat Reader (AcroRd32.exe) в Resource Hacker. Раскройте ветку ресурсов Manifest и найдите в XML описание строку с longPathAware. В данном примере строка <ws2:longPathAware>true</ws2:longPathAware> говорит о том, что Acrobat Reader поддерживает длинные пути и будет корректно работать с такими файлами при включенной политике LongPathsEnabled.

Проверка параметра longPathAware в манифесте исполняемого файлаПроверка параметра longPathAware в манифесте исполняемого файла

Тем не менее, длинные пути всё ещё могут вызывать ошибки в устаревших или специализированных приложениях. Например, Microsoft Word и другие программы MS Office не поддерживают длинные пути. Более того, Проводник Windows по-прежнему не работает с объектами, путь к которым превышает лимит MAX_PATH Win32 API.

Чтобы обойти ограничение Win32 API, многие приложения используют абсолютный путь с префиксом \\?\, который не подчиняется ограничению MAX_PATH. Например, путь в формате UNC может выглядеть так: \\?\C:\ItsVeryVeryLongPath\LongNameFile.txt

Если ваше приложение не поддерживает режим longPathAware, вы можете использовать формат пути с префиксом \\?\ для доступа к файлам. Это позволит обойти ограничение MAX_PATH.

Использование расширенных путей с префиксомИспользование расширенных путей с префиксом

Если вам нужно выполнять массовые операции с файлами, имеющими длинные пути (удаление, перемещение, копирование), которые Проводник Windows не поддерживает, можно воспользоваться альтернативными файловыми менеджерами, такими как FAR, 7-Zip File Manager и другими. Либо использовать командные утилиты, например, robocopy, xcopy или PowerShell.

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

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *