Максимальная длина пути к файлу windows 10

Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями фай...

Время прочтения
4 мин

Просмотры 65K

Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями файлов или каталогов.

В данной статье рассматриваются способы избавления от этого пережитка при разработке приложений на различных платформах (WinApi, .Net Framework, .Net Core) и активации нативной поддержки длинных путей в Windows 10 (Anniversary Update).

Приложения Win API

В приложениях, которые используют Win API для работы с файлами, рецепт избавления от ограничения MAX_PATH был известен с незапамятных времён – необходимо было использовать Unicode версию функции с окончанием «W» для работы с директорией или файлом и начинать путь с префикса \?. Это давало возможность использовать пути длинной до 32767 символов.

В Windows 10 (1607) поведение функций для работы с файлами изменилось: появилась возможность отключить проверку ограничений MAX_PATH на уровне системы.

Это коснулось следующих функций:

Для работы с каталогами: CreateDirectoryW, CreateDirectoryExW, GetCurrentDirectoryW, RemoveDirectoryW, SetCurrentDirectoryW. И для работы с файлами: CopyFileW, CopyFile2, CopyFileExW, CreateFileW, CreateFile2, CreateHardLinkW, CreateSymbolicLinkW, DeleteFileW, FindFirstFileW, FindFirstFileExW, FindNextFileW, GetFileAttributesW, GetFileAttributesExW, SetFileAttributesW, GetFullPathNameW, GetLongPathNameW, MoveFileW, MoveFileExW, MoveFileWithProgressW, ReplaceFileW, SearchPathW, FindFirstFileNameW, FindNextFileNameW, FindFirstStreamW, FindNextStreamW, GetCompressedFileSizeW, GetFinalPathNameByHandleW.

Это избавляет от необходимости использовать префикса \? и потенциально даёт шанс приложениям, работающим напрямую или косвенно через Win API, получить поддержку длинных путей без необходимости их пересборки. Как активировать эту возможность описано в конце статьи.

.Net Framework

Хотя .Net Framework и использует Win API для работы с файлами — предыдущее изменение не принесло бы результата, т.к. в код BCL встроены предварительные проверки на допустимость длинны имён каталогов и файлов, и до вызова функций Win API дело даже не доходило, выдавая известное исключение. По многочисленным просьбам сообщества (более 4500 на UserVoice) в версии 4.6.2 из кода BCL вырезали проверки ограничения длинны пути, отдав это на откуп операционной и файловой системам!

Вот что это даёт:

  • При использовании префикса “\?” мы можем работать с длинными путями как в Win API,
    Directory.CreateDirectory("\\?\" + long_dir_name);
  • Если активировать нативную поддержку длинных имен файлов Windows 10 (1607), то даже не потребуется использовать префикс!

Как включить:

  • Использовать .Net Framework 4.6.2 как цель при сборке приложения.
  • Использовать конфигурационный файл, например, если приложение уже было собрано под .Net 4.0:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
  </runtime>
</configuration>

.Net Core

Тут поддержку длинных путей анонсировали ещё в ноябре 2015 года. Видимо сказалось Open Source природа проекта и отсутствие строгой необходимости обеспечения обратной совместимости.

Как включить:
Всё работает из коробки. В отличие от реализации в .Net Framework – тут нет необходимости в добавлении префикса “\?” – он добавляется автоматически при необходимости.

Вот тут можно посмотреть пример.

Как включить поддержку длинных путей в Windows 10 (1607)

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

Включить встроенную поддержку длинных путей можно создав или изменив следующий параметр системного реестра: HKLMSYSTEMCurrentControlSetControlFileSystem Параметр LongPathsEnabled (Тип: REG_DWORD) 1 – соответствует значению включено.

Или через групповые политики (Win+Rgpedit.msc) Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths.Оно же в локализованном варианте: Конфигурация компьютера > Административные шаблоны > Система > Файловая система > Включить длинные пути Win32.

Далее источники расходятся во мнении относительно манифеста (или я неправильно понял, но на данный момент проверить не имею возможности). Например, в документации MSDN написано, что манифест можно использовать в качестве альтернативного способа активации поддержки длинных путей в отдельных приложениях, а в блоге MSDN указано, что это является вторым обязательным шагом после активации в политиках.
Но они сходятся в формате задания данной опции:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
        <ws2:longPathAware>true</ws2:longPathAware>
    </windowsSettings>
</application>

С CMD, к сожалению, это не сработает, на данный момент, из-за особенностей работы с путями, а в PowerShell должно всё заработать.

P.S.

На этом мой небольшой пятничный пост заканчивается, оставив за рамками вопросы полноты реализации поддержки длинных путей в Windows 10 (1607), или работоспособность при использовании различных комбинаций редакций Windows, файловых систем и API. По мере поступления новых фактов и результатов экспериментов пост будет обновляться.

Спасибо за внимание!

Большинство администраторов и пользователей Windows при работе с файлами, так или иначе сталкивались с ошибкой “path too long”. Эта ошибка возникает при превышении полного пути к файлу (вместе с его именем) значения 260 символов. Многие приложения, в том числе проводник Windows, неправильно работают с такими длинными именами файлов, оказываясь их открывать, перемещать и удалять. Это ограничение не файловой системы NTFS, а библиотеки Win32 API (подробнее о проблеме и обходных способах ее решения рассказано здесь).

В новой сборке Windows 10 Insider Preview Build 14352 доступной участникам программы Windows Insider, появилась новая возможность отключить ограничение на максимальную длину пути.

Отключить ограничение MAX_PATH можно двумя способами: с помощью редактора групповых политик или через реестр. Рассмотрим оба:

  1. Запустите консоль редактора локальной групповой политики, нажав Win+R и выполнив команду gpedit.msc
  2. Перейдите в раздел редактора Local Computer Policy -> Computer Configuration -> Administrative Templates -> System -> Filesystem -> NTFS (Конфигурация компьютера -> Административные шаблоны -> Система -> Файловая система -> NTFS)Групповые политики NTFS
  3. Откройте политику Enable NTFS long pathsEnable NTFS long paths включить поддержку путей более 260 символов
  4. Включите политику, переведя ее в состояние Enabled
  5. Сохраните изменения

При использовании домашней версии Windows 10, в которой отсутствует редактор GPO, это же изменение можно внедрить с помощью редактора реестра.

  1. Запустите редактор реестра regedit.exe
  2. Перейдите в ветку HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionGroup Policy Objects{48981759-12F2-42A6-A048-028B3973495F}MachineSystemCurrentControlSetPolicies
  3. Создайте в данной ветке новый параметр типа Dword (32-bit) Value с именем LongPathsEnabledLongPathsEnabled - параметр реестра
  4. Чтобы отключить ограничение MAX_PATH, измените значение ключа на 1
  5. Также вы можете включить эту функцию одной командой PowerShell:
    Set-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlFileSystem -Name LongPathsEnabled -Value 1

Для вступления изменений в силу в обоих случаях требуется перезагрузка компьютера. После перезагрузки пользователи и программы смогут без ограничений работать с файлами, длина пути к которым превышает 260 символов. Теперь на файлы будет действовать только ограничение файловой системы NTFS – 32767 символов .

Этот функционал доступен всем пользователям Windows 10, начиная с Anniversary Update (1607), и в Windows Server 2016.

Слишком длинное имя файла или слишком длинный целевой путь — как исправить?

Как исправить ошибки слишком длинное имя файла или слишком длинный целевой путьПри копировании, создании, сохранении или перемещении файлов и папок в Windows 11 и Windows 10 на внутреннем HDD или SSD, при копировании данных на внешний диск или флешку, вы можете столкнуться с ошибками вида «Слишком длинный целевой путь. Имена файлов слишком длинны для помещения в эту целевую папку», «Указано неправильное или слишком длинное имя файла» и другие, имеющие отношение к слишком длинным именам или путям к файлам и папкам.

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

  • Слишком длинное имя файла или слишком длинный целевой путь
    • Причины ошибки и способы её исправить
    • Как включить поддержку длинных путей в Windows
      • В редакторе реестра
      • В редакторе локальной групповой политики
    • Почему ошибка сохраняется при включенной поддержке длинных путей

Причины ошибки «Слишком длинное имя файла» и «Слишком длинный целевой путь» и способы её исправить

Слишком длинный целевой путь при копировании

Несмотря на то, что файловой системой NTFS длина пути ограничена 32760 символов, в Windows существует ограничение на полный путь в 260 символов, включая путь к папке и имя файла с расширением. Ещё одно ограничение — 255 символов на имя файла или отдельной папки. Схожие ограничения есть для файловых систем FAT32 и ExFAT. Когда полный путь к файлу, с которым вы выполняете действия, превышает указанное число символов, вы можете получить сообщение об ошибках о слишком длинном целевом пути или слишком длинном имени файла.

Ошибка Слишком длинное имя файла в Windows

Отсюда основные способы исправить ошибки, связанные с использованием слишком длинного пути:

  1. Использовать более короткие имена файлов и более простое и «компактное» дерево папок.
  2. Включить поддержку длинных путей — такая опция есть в Windows 10 и Windows 11, далее будет рассмотрен порядок действий. Однако, это решит не все проблемы, о чем мы также поговорим.
  3. Использовать файловые менеджеры, которые могут работать с длинными путями по умолчанию: Total Commander, Files (но для него потребуется включить и поддержку длинных путей в системе) или даже 7-Zip File Manager, который прекрасно с этим справляется.

Как включить поддержку длинных путей в Windows 10 и Windows 11

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

В редакторе реестра

Если на вашем компьютере установлена Windows 11 или Windows 10 Домашняя, используйте редактор реестра для включения опции:

  1. Нажмите правой кнопкой мыши по кнопке «Пуск» и выберите пункт «Выполнить» или нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter.
  2. В редакторе реестра перейдите к разделу
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem
  3. В правой панели редактора реестра дважды нажмите по параметру с именем LongPathsEnabled и присвойте значение 1 вместо 0 для этого параметра. Включить поддержку длинных путей в редакторе реестра Windows
  4. Закройте редактор реестра, перезагрузите компьютер.

В редакторе локальной групповой политики

В Windows Pro и Enterprise можно использовать редактор локальной групповой политики:

  1. Нажмите клавиши Win+R на клавиатуре, введите gpedit.msc в диалоговом окне «Выполнить» и нажмите Enter.
  2. Перейдите к разделу Конфигурация компьютера — Административные шаблоны — Система — Файловая система.
  3. Дважды нажмите по параметру «Включить длинные пути Win32». Политики файловой системы в gpedit
  4. Установите значение «Включено» для этого параметра, примените настройки. Включить поддержку длинных путей в редакторе локальной групповой политики
  5. Закройте редактор локальной групповой политики и перезагрузите компьютер.

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

Почему ошибки длинных путей появляются, несмотря на включенную поддержку длинных путей

Имена файлов слишком длинны для помещения в эту папку

Даже если вы включите поддержку длинных путей к папкам и файлам в Windows 11/10, при действиях с такими файлами в проводнике и некоторых программах вы продолжите получать ошибки вида «Слишком длинный целевой путь. Имена файлов слишком длинны для помещения в эту целевую папку» или «Указано неправильное или слишком длинное имя файла», также будут недоступны некоторые действия в папках, имеющих длинный путь.

Причина этого — поддержка длинных путей требуется не только на уровне системы, но и в самой программе, которая работает с этими путями, в качестве примера:

  • Проводник не сможет полноценно работать с длинными путями даже при включенной поддержке.
  • Файловый менеджер Files из магазина приложений будет исправно работать, если включить поддержку длинных путей, и будет сообщать об ошибках при отключенной поддержке. Работа с длинными путями в файловом менеджере Files
  • Total Commander или встроенный файловый менеджер 7-Zip работают с длинными путями независимо от того, включена ли их поддержка в Windows.

То же самое касается не только файловых менеджеров, но и прикладных программ: текстовых, графических и видео редакторов и другого ПО.

Надеюсь, инструкция прояснила причины ошибки и возможные способы решения проблемы. Если же вопросы остаются — жду их в комментариях.

Обновлено 28.11.2020

Длинные пути Windows

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Pyatilistnik.org. В прошлый раз мы с вами разобрали возможности утилиты PING, рассмотрели как ее применять на практике. В сегодняшней публикации я вам покажу, как устраняется боль и печаль в операционных системах Windows, я говорю про длинные пути, в своей практике я очень часто встречал жалобы «Слишком длинный целевой путь» или «Слишком длинный конечный путь«, то же самое вы можете встретить и при удалении. Ниже я покажу, как выкручиваться из данной ситуации.

Описание проблемы длинных путей

Раньше имена файлов в Windows ограничивались форматом 8.3 — всего восемь символов для имени файла и три для расширения. С появлением Windows 95 Microsoft сняла этот предел и позволила использовать гораздо более длинные имена.

Тем не менее, файловая система Windows по-прежнему накладывает некоторые ограничения, например, какие символы могут использоваться в именах файлов и общую длину путей. Некоторое время максимальная длина пути составляла 260 символов, но с появлением Windows 10, часть ограничений начала потихоньку уходить, например для приложений и появилась возможность отключить проверку MAX_PATH и использовать длинные пути без префикса \?.

Что интересно, значение в 260 символов обусловлено значением MAX_PATH Win32 API. У файловой системы NTFS максимальная длина пути ″немного″ больше и составляет  32767 символа. Для обхода ограничений Win32 API некоторые приложения используют формат UNC, указывая абсолютный путь с префиксом \?, например так:

\?C:директорияподдиректорияимя файла

Хочу отметить, что на период ноября 2020 года и последней версий Windows 10 1909, в ПРОВОДНИКЕ Windows до сих пор есть ограничения в 260 символов, и мы все слышим обещания, что их исправят

Большинство людей может и не столкнуться с ней, а вот почти каждый системный администратор обязательно это увидит. Тут все дело в том, что в большинстве организаций есть свои сетевые файловые ресурсы, через которые пользователи производят обмен и работу с документами. В какой-то момент люди могут создать такой путь, который будет 258 или 260 символов, попытаются туда скопировать файл, а им выдастся ошибка:

Слишком длинный целевой путь: Имена файлов слишком длинны для помещения в эту целевую папку. Попробуйте использовать более короткое имя имя файла или расположение с более коротким путем

Имена файлов слишком длинны для помещения в эту целевую папку. Попробуйте использовать более короткое имя имя файла или расположение с более коротким путем

Тоже самое при копировании в папку, так же выскакивает «Слишком длинный целевой путь».

Слишком длинный целевой путь, решаем за минуту

Вот ошибка при извлечении архива в сетевую папку:

Не удается завершить извлечение. Слишком длинный конечный путь. Переименуйте сжатую ZIP-папку и повторите попытку

Не удается завершить извлечение. Слишком длинный конечный путь. Переименуйте сжатую ZIP-папку и повторите попытку

Методы снимающие ограничения на длину пути в Windows

  • Через групповую или локальную политику Windows (Применимо только к Windows 10 и Windows Server 2016 и выше)
  • Через реестр Windows (Применимо только к Windows 10 и Windows Server 2016 и выше)
  • Через сторонние утилиты 7-Zip, Far, TotalCommander (Применимо ко всем версиям Windows)
  • Использование силинков (символических ссылок) (Применимо ко всем версиям Windows)
  • Через сетевой диск, для укорачивания пути
  • Утилиты xcopy, robocopy

Нюансы длинных путей в приложениях

Есть один нюанс. Этот новый параметр (имеется ввиду та политика и ключ реестра) не обязательно будет работать со всеми существующими приложениями, но он будет работать с большинством. В частности, любые современные приложения должны работать нормально, как и все 64-битные приложения. Старые 32-разрядные приложения должны быть применимы для работы, что на самом деле просто означает, что разработчик указал в файле манифеста приложения, что приложение поддерживает более длинные пути. Большинство популярных 32-битных приложений не должно вызывать проблем. Тем не менее, вы ничем не рискуете, пробуя настройку. Если приложение не работает, единственное, что произойдет, это то, что оно не сможет открывать или сохранять файлы, сохраненные в местах, где полный путь превышает 260 символов.

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

<application xmlns=»urn:schemas-microsoft-com:asm.v3″>
<windowsSettings>
<longPathAware xmlns=»http://schemas.microsoft.com/SMI/2016/WindowsSettings»>true</longPathAware>
</windowsSettings>
</application>

Как в Windows 10 отключить ограничение на длину пути в 260 символов через политику

Чем примечателен данный метод, так это тем, что неподготовленных пользователей он не вынуждает выполнять команды или производить правку реестра, тут все в графическом виде. Так же если у вас есть домен Active Directory и вы хотите массово убрать ошибки «Слишком длинный целевой путь» или «Слишком длинный конечный путь» в приложениях и запретить им проверять MAX_PATH и использовать длинные пути без префикса \?, то групповые политики вам это помогут.

Еще раз напоминаю, что данный метод подойдет и для серверных версий, даже самых современных Windows Server 2019

Покажу для начала, как делать через локальную политику, открываете окно «Выполнить» в котором пишите gpedit.msc.

Хочу отметить, что для Windows 10 Home данный метод работать не будет, там просто нет редактора локальных политик, там придется лезть в реестр Windows

Как в Windows 10 отключить ограничение на длину пути в 260 символов

Далее идем по пути:

Конфигурация компьютера — Административные шаблоны — Система — Файловая система (Computer configuration — Administrative templates — System — Filesystem)

Найдите тут параметр «Включить длинные пути Win32 (Enable Win32 long paths)«, по умолчанию он отключен, и я честно не понимаю почему. Активируйте его.

Включить длинные пути Win32

То же самое вы можете сделать централизовано для массового управления через групповые политики, все ветки те же самые.

Как я писал выше, в проводнике это не даст ни каких эффектов, поэтому вы все так же будите получать ошибку при копировании, создании, удалении «Слишком длинный целевой путь» или «Слишком длинный конечный путь«. Ниже я покажу, что делать если нужно что-то там удалить или изменить. Данное ограничение в длине пути теперь не подхватиться на лету всеми приложениями, потребуется перезагрузка.

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

Данный метод ни чуть не сложнее предыдущего и делает все то же самое, включает поддержку длинных путей свыше 256 символов для приложений Windows. Когда вы что-то меняете через редактор политик, по сути меняются настройки в реестре, это нужно помнить и знать. Сейчас я вам покажу какой ключ меняется. Откройте редактор реестра Windows.  Перейдите в раздел:

HKLMSystemCurrentControlSetControlFileSystem

тут вам необходимо найти параметр LongPathEnabled, которому для активации поддержки длинных путей и изменения ограничений в MAX_PATH, нужно задать значение «1». Тут потребуется перезагрузка.

Включение поддержки длинных путей через реестр Windows. LongPathEnabled

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

Ключи реестра для активации MAX_PATH

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

HKEY_CURRENT_USERSOFTWAREMicrosoftWindows CurrentVersionGroup Policy Objects {48981759-12F2-42A6-A048-028B3973495F} MachineSystemCurrentControlSetPolicies

Если там нет ключа LongPathsEnabled, то создайте его, тип DWORD (32 бита) и значение 1.

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

Не все люди готовы копаться в редакторах и реестрах, им нужно быстрое решение, одним из таких является PowerShell. В оболочке выполните команду для активации параметра «Включить длинные пути Win32 (LongPathEnabled)». Не забываем перезагрузить систему.

Set-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlFileSystem -Name LongPathsEnabled -Value 1

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

Как удалять, копировать, переносить файлы и папки при ошибке с длинными путями

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

Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку

Запустите командную строку в режиме администратора и введите:

reg add «HKLMSYSTEMCurrentControlSetControlFileSystem» /v LongPathsEnabled /t REG_DWORD /d 1

Потребуется перезагрузка.

Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку

Обход ограничений длинных путей через 7zFM

Наверняка многие знают архиватор 7Zip, но мало кто пользуется его файловым менеджером 7zFM.exe, а зря именно он может вам помочь в ситуации с сообщением «Слишком длинный целевой путь» или «Слишком длинный конечный путь».  Вот у меня есть тестовая директория, у которой уже есть 260 символов в пути, и я не могу там создавать новую папку.

Исправляем Слишком длинный путь к источнику через 7zFM

Откройте 7zFM.exe и перейдите в нем в конечную папку вашего пути.

Для создания новой папки нажмите клавишу F7.

Создание папки в 7zFM.exe

Задайте необходимое вам имя, в моем примере это будет «БОльше 260 Microsot«.

Указание имени у создаваемой папки в 7zFM.exe

В результате у нас создалась новая папка и заметьте 7zFM не ругнулся на наличие длинных путей, он их игнорирует просто и все.

Успешно созданная папка через 7zFM.exe

Проверяем, что директория доступна через проводник Windows.

Обход ограничений длинных путей через 7zFM

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

Обход ограничений длинных путей через 7zFM

Как обойти ограничение длинных путей через символьную ссылку

Такой трюк мы с вами уже проделывали, когда нужно было переносить IMAP профиль у Outlook. Смысл в том, что создается файл в нужном вам месте, и этот файл это просто ярлык ссылающийся на нужный вам файл или папку, после этого путь сокращается и вы можете удалять или создавать все что вам нужно. Откройте командную строку, далее вам нужно иметь два составляющих:

  • Путь где будет лежать файл символической ссылки — в моем примере C:короткий путь
  • Длинный путь — C:ShareWINDOW~1C73D~1C6BF~1 D915~15C04~1B4E5~1260MIC~1

Как обойти ограничение длинных путей через символьную ссылку

Нам поможет команда mklink, где ключ /D создает ссылку на каталог

mklink /D «C:короткий путь» «C:ShareWINDOW~1 C73D~1C6BF~1D915~15C04~1B4E5~1260MIC~1»

Символическая ссылка успешно создана, можно проверять.

Создание символической ссылки для решения проблемы длинных путей

Откройте каталог с укороченным путем и попробуйте создать просто папку, в итоге она будет создана именно по тому длинному пути, как видите легко можно обходить ограничение в 260 символов.

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

Как обойти ограничение длинных путей через сопоставление subst

subst — простая команда позволяющая связать нужный путь к каталогу с буквой диска. Так же откройте командную строку в режиме администратора и сопоставьте ваш длинный путь с буквой W.

subst W: «C:ShareWINDOW~1C73D~1C6BF~1 D915~15C04~1B4E5~1260MIC~1»

Как обойти ограничение длинных путей через сопоставление subst

У вас в проводнике Windows должен появиться диск с данной буквой, если его нет, то прочитайте статью «Не появляется диск после команды subst» или просто в проводнике вбейте W: и нажмите Enter.

Как устранить проблему длинных путей Windows

Как обойти ограничение длинных путей через монтирование сетевого диска

В командной строке используйте команду net use, далее буква диска, которую мы присваиваем и в самом конце путь:

net use Z: «\DESKTOP-OJ0SCOEShareWINDOW~1 C73D~1C6BF~1D915~15C04~1B4E5~1260MIC~1» /persistent:yes

Создание сетевого диска ведущего на длинный путь Windows

Как видим все прекрасно отработало и диск появился.

Как обойти ограничение длинных путей через монтирование сетевого диска

Использование утилит Far или Total Commander

После включения параметра «Включить длинные пути Win32» данные утилиты в 100% случаев помог вам произвести любые действия с папками или файлами на любом длинном пути в системе Windows. Откройте Total Commander и создайте для примера папку в каталоге с длинным путем, напоминаю для этого нужно нажать F7.

Использование утилит Far или Total Commander

Как видите все прекрасно создается, удаляется или копируется при желании.

Успешно созданная папка в Total Commander

Как еще обойти проблему с длинными путями Windows

В мир виртуализации и облаков, многие компании переносят свои файловые ресурсы именно туда. Например в моей компании используют для хранения большинства данных это Google Drive, кто-то диски mail.ru или Яндекса, не нужно этого бояться, главное смотрите, чтобы это подходило с юридической точки зрения но и не нужно лукавить это может стоить дополнительных расходов, но зато ни каких длинных путей, вышедших из строя дисков в RAID, место наращивается на лету, короче одни плюсы.

На этом у меня все, мы разобрали как исправляются ошибки «Слишком длинный целевой путь» или «Слишком длинный конечный путь«, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Практически каждый пользователь Windows рано или поздно сталкивается с ошибкой ″слишком длинный путь″ (path too long). Ошибка эта возникает при работе с файлами или папками, у которых полный путь превышает значение в 260 символов.

Напомню, что полный путь включает в себя букву диска, двоеточие, обратный слэш, имена компонентов (файл, директория) разделенные слешем и завершающий пустой символ (NUL). Выглядит полный путь примерно так:

C:directorysubdirectoryfilename<NUL>

Соответственно, если сумма всех компонентов пути больше 260 символов, то путь считается слишком длинным. Большинство приложений Windows не умеют работать с такими путями и при обращении к файлупапке выдадут примерно такое сообщение:

ошибка "path too long"

Что интересно, значение в 260 символов обусловлено значением MAX_PATH Win32 API. У файловой системы NTFS максимальная длина пути ″немного″ больше и составляет  32767 символов. Для обхода ограничений Win32 API некоторые приложения используют формат UNC, указывая абсолютный путь с префиксом \?, например так:

\?C:directorysubdirectoryfilename

В Windows 10 (начиная с версии 1607) появилась возможность отключить проверку MAX_PATH и использовать длинные пути без префикса \? . Сделать это можно двумя способами — с помощью групповых политик или путем редактирования реестра. Мы рассмотрим оба способа, начнем с политик.

Групповые политики

Первым делом  открываем редактор локальных групповых политик, для чего жмем клавиши Win+R и выполняем команду gpedit.msc.

запуск оснастки локальных групповых политик

Нужная нам политика находится в разделе Конфигурация компьютераАдминистративные шаблоныСистемаФайловая система (Computer configurationAdministrative templatesSystemFilesystem) и называется Включить длинные пути Win32 (Enable Win32 long paths).

выбор политики включения длинных путей

Для активации поддержки длинных путей надо перевести политику в состояние «Включено».

включение политики

Реестр

Для включения поддержки длинных путей через реестр необходимо найти в разделе HKLMSystemCurrentControlSetControlFileSystem параметр с именем LongPathEnabled и задать его значение равным 1.

включение длинных путей через реестр

Эту операцию можно произвести с помощью PowerShell, командой:

Set-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlFileSystem -Name LongPathsEnabled -Value 1

В обоих случаях потребуется перезагрузить компьютер. После перезагрузки изменения вступят в силу и для путей будет действовать только ограничение файловой системы NTFS (32767 символа), превысить которое вам навряд ли удастся. Однако это вовсе не значит, что можно расслабится. В некоторых приложениях проверка MAX_PATH заложена в коде,  поэтому  по возможности лучше не превышать это ограничение.

Дополнение

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

<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>

А теперь о грустном. Как внезапно оказалось, в проводнике Windows поддержка длинных путей не реализована!!! Один из разработчиков Microsoft по этому поводу сказал примерно следующее:

″Эта функция не готова для включения в Windows Explorer. Вам нужно подождать, пока Microsoft не включит ее в Explorer, или использовать сторонний инструмент управления файлами, который совместим с длинными путями. ″

Это было сказано еще в 2016 году. Но, судя по всему, разработчики на данную проблему просто забили. На данный момент в версии 1903 проводник все так же не поддерживает длинные пути файлов. Вот так 🙁

Давно известен тот факт, что Проводник Windows и большинство Windows-приложений не могут работать с файлами и папками, длина пути к которым превышает 260 символов. И это — лишь программное ограничение на уровне Win32 API, известное также как MAX_PATH, тогда как файловая система NTFS сама по себе допускает до 32767 символов в адресе объекта файловой системы, чем успешно пользовались сторонние приложения, работавшие в обход стандартного API, например, FAR и Total Commander.

Также данное ограничение не касалось работы с файлами при сетевом доступе, что приводило к казусным ситуациям: рядовой пользователь в расшаренной папке может создавать и изменять файлы и папки, администратор через Windows Explorer — получает отказ доступа. Причём данное ограничение имело место не только в Windows 7/8/8.1 и более ранних ОС, но и в новейшей Windows 10.

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

И вот, как сообщает ряд тестеров регулярно выпускаемых закрытых сборок Windows 10, компания Microsoft, наконец, снизошла до исправления этого недостатка и выпуска исправления. Точнее — реализации настройки, которую должен будет включить сам пользователь. В шаблонах групповых политик появился соответствующий параметр «Включение длинных адресов NTFS» (Конфигурация компьютера -> Административные шаблоны -> Система -> Файловая система -> NTFS).

рекомендации

3070 Gigabyte Gaming за 50 тр с началом

Выбираем игровой ноут: на что смотреть, на чем сэкономить

3070 Gainward Phantom дешевле 50 тр

13700K дешевле 40 тр в Регарде

Ищем PHP-программиста для апгрейда конфы

3070 дешевле 50 тр в Ситилинке

MSI 3050 за 25 тр в Ситилинке

3060 Gigabyte Gaming за 30 тр с началом

13600K дешевле 30 тр в Регарде

4080 почти за 100тр — дешевле чем по курсу 60

12900K за 40тр с началом в Ситилинке

RTX 4090 за 140 тр в Регарде

Компьютеры от 10 тр в Ситилинке

3060 Ti Gigabyte за 42 тр в Регарде

Единственное, что огорчает — Редактор групповых политик (gpedit.msc) отсутствует в редакциях Windows 10, отличных от «Профессиональная» и «Корпоративная» (хотя существуют неофициальные и не совсем легальные способы обойти это ограничение). Впрочем, необходимые ключи в реестре наверняка будут найдены. Как подсказывает один из читателей, это параметр LongPathsEnabled (тип DWORD), расположенный в реестре по адресу HKEY_LOCAL_MACHINESystemCurrentControlSetPolicies.

На чтение 4 мин. Просмотров 481 Опубликовано 02.05.2021

В юбилейном обновлении Windows 10 Microsoft наконец-то решила давнюю проблему, с которой разработчики столкнулись при разработке – ограничение в 260 символов для длины пути. Это ограничение длины пути присутствовало в Windows почти вечность. Если вы не знаете, во всех выпущенных на данный момент версиях Windows максимальная длина пути к файлу составляет 260 символов. Начиная со сборки 14352 Windows 10, которая является частью Anniversary Update (версия 1607), это ограничение можно обойти.

Все файловые системы Windows имеют понятие файлов и папок для доступа к сохраненным данным. Путь – это строковое значение, указывающее, где хранятся эти данные. Однако существует ограничение в 260 символов для пути, налагаемого Windows, которое включает букву диска, двоеточие, разделительную обратную косую черту и завершающий нулевой символ. Это ограничение не для файловой системы NTFS, а для устаревших API-интерфейсов, которые используются для доступа к данным. Существуют также обходные пути, такие как доступ к Unicode (или «широким») версиям функций Windows API, а также добавление к пути префикса ? .

В конце на уровне пользователя, некоторые пользователи могли уже сталкиваться с проблемой в прошлом, когда проводник не разрешает доступ к файлу или папке, если путь к ним превышает 260 символов. В такой ситуации у пользователя нет другого решения, кроме как использовать символические ссылки для доступа к этим данным или сторонний инструмент, который использует обходные пути. Например, альтернативный инструмент управления файлами, Total Commander, может помочь вам получить доступ к таким файлам и папкам, поскольку он может работать с длинными путями из коробки.

Однако в оболочке Explorer все еще есть это ограничение было в Windows в течение многих лет. Чтобы решить эту проблему, Microsoft внесла соответствующие изменения в Windows 10. Новый параметр групповой политики, доступный начиная с Windows 10, сборка 14352, позволит операционной системе иметь пути длиной более 260 символов:

Включение длинных путей NTFS позволит проявленным приложениям Win32 и приложениям Магазина Windows получать доступ к путям, превышающим обычное ограничение в 260 символов на узел. Включение этого параметра приведет к тому, что в процессе будут доступны длинные пути.

На самом деле это означает, что приложение должно иметь следующую строку в своем манифесте:

  true  

Манифест – это небольшой файл, содержащий дополнительную информацию о процессе EXE, такую ​​как информацию о совместимости, сведения о DPI и т. д.

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

Как включить длинные пути NTFS в Windows 10 с помощью групповой политики

  1. Нажмите вместе клавиши Win + R на клавиатуре и введите:
     gpedit.msc 

    Нажмите Enter.

  2. Откроется редактор групповой политики. Перейдите в Политика локального компьютера -> Конфигурация компьютера -> Административные шаблоны -> Система -> Файловая система -> NTFS.
  3. Там дважды щелкните и включите параметр Включить длинные пути NTFS
  4. Перезагрузите Windows 10.

Как включить NTFS Long Paths в Windows 10 с помощью настройки групповой политики

  1. Открыть редактор реестра.
  2. Перейдите к следующему ключу реестра:
     HKEY_LOCAL_MACHINE  System  CurrentControlSet  Policies 

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

  3. С правой стороны создайте новое 32-битное значение DWORD с именем LongPathsEnabled . Установите его значение data равным 1.
    Примечание. Даже если вы используете 64-разрядную версию Windows, вам все равно нужно создать 32-битное значение DWORD. См. Следующий снимок экрана:
  4. Перезагрузите Windows 10.

Наконец, есть способ включить эту новую функцию без использования групповой политики. Для этого требуется следующая настройка.

Как включить NTFS Long Paths в Windows 10 с помощью настройки реестра

  1. Откройте редактор реестра.
  2. Перейдите к следующему разделу реестра:
     HKEY_LOCAL_MACHINE  SYSTEM  CurrentControlSet  Control  FileSystem 

    Совет: вы можете получить доступ к желаемый ключ реестра одним щелчком мыши.
    Если у вас нет такого ключа, просто создайте его.

  3. С правой стороны создайте новый 32- битовое значение DWORD с именем LongPathsEnabled . Установите для него значение 1.
  4. Перезагрузите Windows 10.

Готово.

См. Следующее видео. :

Вы можете подписаться на наш канал YouTube здесь: Youtube .

Благодаря Anniversary Update для Windows 10 вы можете, наконец, отказаться от ограничения максимального пути в 260 символов в Windows. Вам просто нужно внести небольшие изменения в реестр Windows или групповую политику. Далее рассказано, как это сделать.

До Windows 95, операционная система Windows допускала только имена файлов длиной восемь символов с расширением файла из трёх символов, обычно называемое именем файла 8.3. Windows 95 отказалась от этого, чтобы разрешить длинные имена файлов, но по-прежнему ограничивала максимальную длину пути (которая включает полный путь к папке и имя файла) не более 260 символами. Этот предел был установлен тогда и действует до сих пор. Если вы когда-либо сталкивались с этим ограничением, скорее всего, это было, когда вы пытались скопировать папки с глубоким вложением в другие папки, например, при копировании содержимого жёсткого диска в папку на другом диске. В Windows 10 Anniversary Update наконец добавлена возможность отказаться от этой максимальной длины пути.

Есть одна оговорка. Этот новый параметр не обязательно будет работать с каждым приложением, но он будет работать с большинством. В частности, любые современные приложения должны быть в порядке, как и все 64-битные приложения. Более старые 32-битные приложения должны быть подготовлены специальным образом, что на самом деле означает, что разработчик указал в файле манифеста приложения, что приложение поддерживает более длинные пути. У большинства популярных 32-битных приложений проблем не должно быть. Тем не менее вы ничем не рискуете если выполните эту настройку. Если приложение не работает, единственное, что произойдёт, это то, что оно не сможет открывать или сохранять файлы, сохранённые в местах, где полный путь превышает 260 символов.

Windows Home: как снять ограничение в 260 символов на путь имени файла

Если у вас версия Windows Home, вам придётся отредактировать реестр Windows, чтобы внести эти изменения. Вы также можете сделать это таким образом, если у вас Windows Pro или Enterprise, но вы чувствуете себя более комфортно, работая в реестре, чем редактор групповой политики. (Однако, если у вас есть Pro или Enterprise, мы рекомендуем использовать более простой редактор групповой политики, как описано в следующем разделе.)

Стандартное предупреждение: редактор реестра является мощным инструментом, и неправильное его использование может сделать вашу систему нестабильной или даже неработоспособной. Это довольно простая настройка, и пока вы придерживаетесь инструкции, у вас не должно быть никаких проблем. Тем не менее если вы никогда не работали с реестром ОС раньше, изучите более подробно о том, как использовать редактор реестра, прежде чем приступить к работе. И обязательно сделайте резервную копию реестра (и вашего компьютера!) перед внесением изменений.

Чтобы начать, откройте редактор реестра, нажав «Пуск» и напечатав «regedit». Нажмите Enter, чтобы открыть редактор реестра и дать ему разрешение вносить изменения в свой компьютер.

В редакторе реестра используйте левую боковую панель, чтобы перейти к следующему ключу:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem

Справа найдите значение с именем LongPathsEnabled и дважды щёлкните его. Если вы не видите значения в списке, вам нужно создать его, щёлкнув правой кнопкой мыши по ключу FileSystem, выбрав New > DWORD (32-bit) Value, а затем присвоив имя новому значению LongPathsEnabled.

В окне свойств значения измените значение с 0 на 1 в поле «Значение» и нажмите кнопку «ОК».

Теперь вы можете закрыть редактор реестра и перезагрузить компьютер (или выйти из своей учётной записи и войти снова). Если вы хотите отменить изменения, просто вернитесь к значению LongPathsEnabled и установите его значение от 1 до 0.

Включите поддержку длинных имён файлов одним кликом

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

Long Path Names Hacks

Эти хаки на самом деле являются просто ключом FileSystem, урезанным до значения LongPathsEnabled, которое мы описали выше, а затем экспортированным в файл .REG. Запуск хака «Remove 260 Character Path Limit.reg» устанавливает значение LongPathsEnabled равным 1. Запуск хака «Restore 260 Character Path Limit (Default).reg» устанавливает значение обратно в 0.

Windows Pro или Enterprise: как снять ограничение в 260 символов на путь имени файла с помощью редактора локальной групповой политики

Если вы используете Windows 10 Pro или Enterprise, самый простой способ отменить ограничение на длину пути файла в 260 символов это использовать редактор локальной групповой политики. Это довольно мощный инструмент, поэтому, если вы никогда не использовали его раньше, стоит потратить некоторое время на изучение того, что он может делать. Кроме того, если вы находитесь в сети компании, сделайте всем одолжение и сначала проконсультируйтесь с вашим администратором. Если ваш рабочий компьютер является частью домена, вполне вероятно, что он является частью групповой политики домена, которая в любом случае заменит локальную групповую политику.

В Windows 10 Pro или Enterprise нажмите «Пуск», введите gpedit.msc и нажмите Enter.

В редакторе локальной групповой политики в левой панели перейдите к Конфигурация компьютера > Административные шаблоны > Система > Файловая система. Справа найдите элемент «Включить длинные пути Win32» и дважды щёлкните его.

В открывшемся окне свойств выберите параметр «Включено» и нажмите «ОК».

Теперь вы можете выйти из редактора локальной групповой политики и перезагрузить компьютер (или выйти и снова войти), чтобы изменения вступили в силу. Если в любой момент вы хотите отменить изменения, просто следуйте той же процедуре и установите для этого параметра значение «Отключено» или «Не настроено».

Максимальный предел пути не является чем-то важным, что обязательно нужно изменить, но для некоторых людей это, безусловно, это ограничение было довольно досадным. Windows 10 наконец-то добавила возможность убрать это ограничение. Вам достаточно просто внести небольшие и быстрые изменения в реестр или групповую политику, чтобы это произошло.

Связанные статьи:

  • Существует ли предел длины имени файлов в Windows (100%)
  • Как переименовать файл или папку в PowerShell (66.7%)
  • Создание жёстких и мягких ссылок с помощью PowerShell (66.7%)
  • Как обновить Windows до последней версии (50%)
  • Как изменить сочетание клавиш для смены раскладки клавиатуры (50%)
  • Как в Linux на WSL открыть файл Windows (RANDOM — 50%)

Проблема

Изменение пути к пути по умолчанию (MAX_PATH) для 256 символов в Windows 10.

Среда:

Windows 10 (1607) и более поздние версии.

Решение

Начиная с версии 10, в ОС Windows 1607 ограничения MAX_PATH были удалены из функций общих файлов Win32 и каталогов. Чтобы использовать новый расширенный путь, необходимо

принять участие, используя изменение ключа реестра

.

Предупреждение!

Проблемы, вызванные неправильным редактированием реестра Windows, могут привести к отказу операционной системы. Корпорацией Майкрософт подготовлено большое количество информации о работе с реестром, которую можно найти в базе знаний МайкрософтИспользуйте редактор реестра Microsoft на свой страх и риск. Предварительно сделайте резервную копию реестра в соответствии с инструкциями для вашей операционной системы, представленными в статье Майкрософт Резервное копирование и восстановление реестра в Windows и связанной статье Резервное копирование системного реестра. Дополнительные сведения о реестре также содержатся в разделах справки редактора реестра Microsoft.

Включение режима длинных путей в Windows 10

  1. Перейдите в меню «Пуск» и введите REGEDIT.
  2. Выберите редактор реестра.
  3. В редакторе реестра перейдите к следующей папке: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem.
  4. Выберите запись с именем: LongPathsEnabled. 

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

  1. Выбрав папку FileSystem, щелкните правой кнопкой в пустом месте столбца Name, где находятся ключи реестра.
  2. Выберите Новый.
  3. Выберите значение DWORD (32-разрядная версия).

Изображение, добавленное пользователем

  1. Щелкните правой кнопкой мыши только что добавленную шпонку и выберите «Переименовать».
  2. Присвойте ключевому слову LongPathsEnabled (ДлинныеПутиВключены).
  3. Нажмите клавишу ENTER.
  1. Дважды щелкните запись LongPathsEnabled, чтобы открыть ключ. 
  2. В поле «Значение» введите значение 1. Это позволит использовать параметр длинных путей.

После первого вызова файла или функции папки Win32 система будет кэширована системой (по каждому процессу). В течение всего процесса повторно загрузка ключа реестра не выполняется. Для того чтобы все приложения в системе распоывали значение ключа, может потребоваться перезагрузка машины, так как некоторые процессы могли быть запущены до установки ключа.

Кроме того, ключ реестра можно контролировать с помощью групповой политики в разделе «Конфигурация компьютера» > «Административные шаблоны» > «Система» > «Дополнительно» > «Разрешить NTFS дополнительные пути».

Изображение, добавленное пользователем

Программы

Все классические программы

Like this post? Please share to your friends:
  • Майкрософт офис word 2007 скачать бесплатно для windows 10 на русском
  • Майкрософт поинт 2007 скачать бесплатно для windows 7 на русском
  • Максимальная длина названия файла windows 7
  • Майкрософт офис sp1 2007 скачать бесплатно для windows 7
  • Майкрософт повер поинт скачать бесплатно для windows 10 на русском торрент