Ограничение длины пути к файлу (MAX_PATH)

Ограничение длины пути к файлу (MAX_PATH)

Проблема

Проблема: При создании или переименовании файла Windows не позволяет задать имя длиннее определённого количества символов

Выглядит это так:

  • При переименовании файла Проводник перестаёт принимать новые символы
  • Сообщение об ошибке не появляется
  • В разных папках максимально допустимая длина имени отличается

Это связано с историческим ограничением Windows на длину полного пути к файлу (MAX_PATH)

В классическом Win32 API значение MAX_PATH составляет 260 символов, включая завершающий нулевой символ

При этом учитывается не только имя файла, но и весь путь к нему:
C:\Users\Admin\Documents\Projects\Reports\Document.docx

Полный путь складывается из:

  • Буквы диска и корневого каталога
  • Названий всех вложенных папок
  • Разделителей \
  • Имени файла и расширения

Например:
Если путь до папки занимает 235 символов, то для имени файла вместе с расширением остаётся около 23 символов. Поэтому один и тот же файл может без проблем переименовываться в C:\Temp, но не в папке с большой глубиной вложенности.

Дополнительные ограничения

Ограничение Значение
MAX_PATH 260 символов, включая завершающий NULL
Имя одного файла или каталога в NTFS Обычно 255 символов
Поддержка более длинных путей Windows 10 (1607+) и Windows 11, при соблюдении условий

Решения

Сократить полный путь

Например, вместо:

  • C:\Users\Admin\Documents\Company\Projects\2026\Documentation\Reports\
    использовать:
  • C:\Projects\Reports\

Создать виртуальный диск через SUBST

Команда subst позволяет назначить существующему каталогу отдельную букву диска без физического перемещения файлов

Создание виртуального диска:

  • subst X: "C:\Users\Admin\Documents\Company\Projects\2026\Documentation\Reports"
  • После этого каталог станет доступен через X:\, что позволит обращаться к его содержимому по более короткому пути

Удаление виртуального диска:

  • subst X: /d
  • Команда удаляет только виртуальное сопоставление. Исходные файлы остаются на месте

Включить поддержку длинных путей

Windows 10 и 11 позволяют включить поддержку длинных путей для совместимых приложений

  1. Запустить PowerShell от админа и выполнить:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
  1. Перезагрузить компьютер

Альтернативный способ через групповые политики (если редактор доступен):

  • Конфигурация компьютера -> Административные шаблоны -> Система -> Файловая система -> Включить длинные пути Win32

Важно: изменение этого параметра не гарантирует устранение ограничения в Проводнике Windows. Приложение должно самостоятельно поддерживать работу с длинными путями (longPathAware).

#windows#траблшутинг#файловая система

Комментарии

Пока нет комментариев. Будь первым!

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

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