Есть две вещи, которые еще не упомянуты в существующих ответах.
- Вы можете использовать префикс длинных путей для доступа к длинным путям
- В Windows 10 вы можете включить поддержку длинных путей для общего пользования - обратите внимание, однако, что не все приложения будут работать с длинными путями, вам следует протестировать старое программное обеспечение. Только программное обеспечение с соответствующей записью манифеста сможет воспользоваться этим.
Префикс длинного пути
В Windows API есть специальная функция, которая поддерживает Unicode имена путей длиной до 32k символов (каждый элемент имеет длину до 255 символов).
Это часто ошибочно называется UNC именами, но это не так.
Префикс, используемый для указания API использовать длинные юникодные пути, это `\?Есть две вещи, которые еще не упомянуты в существующих ответах.
- Вы можете использовать префикс длинных путей для доступа к длинным путям
- В Windows 10 вы можете включить поддержку длинных путей для общего пользования - обратите внимание, однако, что не все приложения будут работать с длинными путями, вам следует протестировать старое программное обеспечение. Только программное обеспечение с соответствующей записью манифеста сможет воспользоваться этим.
Префикс длинного пути
В Windows API есть специальная функция, которая поддерживает Unicode имена путей длиной до 32k символов (каждый элемент имеет длину до 255 символов).
Это часто ошибочно называется UNC именами, но это не так.
Префикс, используемый для указания API использовать длинные юникодные пути, это , как в:
\?\D:\very long path
UNC имена обычно используются при обращении к путям на удаленных серверах в форме \servername\path name\file name
. Вы можете комбинировать это с префиксом длинного пути так: \?\UNC\server\share
Обратите внимание, что некоторые, плохо написанные, но, к сожалению, довольно распространенные приложения не поддерживают ни UNC-пути файлов, ни префикс длинного пути.
Ссылка: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath
Поддержка длинных путей
Эта опция была добавлена в последние версии Windows 10. На момент написания статьи она не активирована по умолчанию, так как требует поддержки конкретных приложений. Интересно, что PowerShell имеет встроенную поддержку, поэтому включение этой опции позволит использовать длинные пути непосредственно в сценариях PowerShell.
Вы можете активировать ее через редактор групповой политики, если у вас есть версия Windows с этой опцией. Или вы можете просто использовать следующее изменение реестра. Как всегда, сделайте резервную копию раздела реестра, который вы изменяете, прежде чем что-либо делать.
- Запустите
regedit.exe
.
- Подтвердите подсказку UAC.
- Перейдите к ключу:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
- Создайте или измените ключ
LongPathsEnabled
.
- Если его нет, щелкните правой кнопкой мыши на Policy (Политики) и выберите New > Dword (32-bit) Value (Новое >Слово (32-bit) Value (Новое ) из меню.
- Установите
LongPathsEnabled
на 1
для включения.
Любые приложения с соответствующими записями манифеста теперь будут иметь доступ к стандартным длинным путям POSIX. Это должно включать в себя приложения Windows Store.
Ссылка: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
UPDATE 2017-04-09
@maoizm указал на проблему с ключом реестра выше, так что я сделал некоторые дополнительные раскопки . Похоже, теперь вы можете установить поддержку длинных имен файлов с помощью системного ключа:
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
Это все еще работает только для приложений, которые специально настроены на его использование (требуется запись в приложении манифест.xml).
Обратите внимание, что вы не можете использовать относительные имена путей с помощью этого метода.