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

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

by admin
A+A-
Сброс

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

Это ограничение связано не с файловой системой NTFS, а с Win32 API, в котором максимальная длина пути (MAX_PATH) зафиксирована на уровне 260 символов. Полный путь включает в себя букву диска (например, E:\), которая занимает три символа; путь к папке; имя файла; а также невидимый завершающий символ NULL, который занимает один символ. Таким образом, реальная максимальная длина имени файла или папки составляет 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 (File Explorer) по-прежнему не умеет работать с объектами, у которых путь превышает ограничение Win32 API MAX_PATH.

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

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

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

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

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

Вам также может понравиться

оставить комментарий

Focus Mode