- Проблемы с путями windows
- Описание проблемы длинных путей
- Методы снимающие ограничения на длину пути в Windows
- Нюансы длинных путей в приложениях
- Как в Windows 10 отключить ограничение на длину пути в 260 символов через политику
- Включение поддержки длинных путей через реестр
- Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell
- Как удалять, копировать, переносить файлы и папки при ошибке с длинными путями
- Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку
- Обход ограничений длинных путей через 7zFM
- Как обойти ограничение длинных путей через символьную ссылку
- Слишком длинный путь к источнику
- Описание
- Причина
- Решение
- Способ 1. Уменьшаем путь до файла
- Способ 2. Включаем поддержку длинных файлов
- Способ 3. Far Manager
- Способ 4. Укорачиваем сетевой путь
- Способ 5. Используем командную строку
- В чем была проблема?
- Неправильный путь приложения
- Ответы (12)
Проблемы с путями 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, указывая абсолютный путь с префиксом \\?\, например так:
Большинство людей может и не столкнуться с ней, а вот почти каждый системный администратор обязательно это увидит. Тут все дело в том, что в большинстве организаций есть свои сетевые файловые ресурсы, через которые пользователи производят обмен и работу с документами. В какой-то момент люди могут создать такой путь, который будет 258 или 260 символов, попытаются туда скопировать файл, а им выдастся ошибка:
Тоже самое при копировании в папку, так же выскакивает «Слишком длинный целевой путь».
Вот ошибка при извлечении архива в сетевую папку:
Методы снимающие ограничения на длину пути в 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, в манифесте обязательно указывайте следующие настройки:
Как в Windows 10 отключить ограничение на длину пути в 260 символов через политику
Чем примечателен данный метод, так это тем, что неподготовленных пользователей он не вынуждает выполнять команды или производить правку реестра, тут все в графическом виде. Так же если у вас есть домен Active Directory и вы хотите массово убрать ошибки «Слишком длинный целевой путь» или «Слишком длинный конечный путь» в приложениях и запретить им проверять MAX_PATH и использовать длинные пути без префикса \\?\, то групповые политики вам это помогут.
Покажу для начала, как делать через локальную политику, открываете окно «Выполнить» в котором пишите gpedit.msc.
Далее идем по пути:
Найдите тут параметр «Включить длинные пути Win32 (Enable Win32 long paths)«, по умолчанию он отключен, и я честно не понимаю почему. Активируйте его.
Как я писал выше, в проводнике это не даст ни каких эффектов, поэтому вы все так же будите получать ошибку при копировании, создании, удалении «Слишком длинный целевой путь» или «Слишком длинный конечный путь«. Ниже я покажу, что делать если нужно что-то там удалить или изменить. Данное ограничение в длине пути теперь не подхватиться на лету всеми приложениями, потребуется перезагрузка.
Включение поддержки длинных путей через реестр
Данный метод ни чуть не сложнее предыдущего и делает все то же самое, включает поддержку длинных путей свыше 256 символов для приложений Windows. Когда вы что-то меняете через редактор политик, по сути меняются настройки в реестре, это нужно помнить и знать. Сейчас я вам покажу какой ключ меняется. Откройте редактор реестра Windows. Перейдите в раздел:
тут вам необходимо найти параметр LongPathEnabled, которому для активации поддержки длинных путей и изменения ограничений в MAX_PATH, нужно задать значение «1». Тут потребуется перезагрузка.
Все что вам нужно, это распаковать zip-архив и запустить нужный файл активации, потом так же перезагрузиться, так как у вас будет создан нужный ключ реестра, без необходимости лезть в реестр самостоятельно.
Еще вы можете сделать такую поддержку и для конкретного пользователя по пути:
Если там нет ключа LongPathsEnabled, то создайте его, тип DWORD (32 бита) и значение 1.
Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell
Не все люди готовы копаться в редакторах и реестрах, им нужно быстрое решение, одним из таких является PowerShell. В оболочке выполните команду для активации параметра «Включить длинные пути Win32 (LongPathEnabled)». Не забываем перезагрузить систему.
Как удалять, копировать, переносить файлы и папки при ошибке с длинными путями
Разобравшись с тем, как отключить проверку MAX_PATH в приложениях, давайте теперь поймем и научимся решать проблему длинных путей на файловых шарах и просто в проводнике. Классическая ситуация, когда пользователь попытался перенести свой файл или удалить его, создать папку и так далее, и он получает ошибку с пресловутыми длинными путями. Он просит разобраться вас и тут начинаются танцы с бубнами, вы просите его либо переименовать часть пути, или попросить его произвести действия в другом расположении, или просто забить, сказав, что виновата Windows со своими ограничениями, но мы же с вами профессионалы и инженеры, поэтому должны уметь выходить из таких ситуаций.
Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку
Запустите командную строку в режиме администратора и введите:
Обход ограничений длинных путей через 7zFM
Наверняка многие знают архиватор 7Zip, но мало кто пользуется его файловым менеджером 7zFM.exe, а зря именно он может вам помочь в ситуации с сообщением «Слишком длинный целевой путь» или «Слишком длинный конечный путь». Вот у меня есть тестовая директория, у которой уже есть 260 символов в пути, и я не могу там создавать новую папку.
Откройте 7zFM.exe и перейдите в нем в конечную папку вашего пути.
Для создания новой папки нажмите клавишу F7.
Задайте необходимое вам имя, в моем примере это будет «БОльше 260 Microsot«.
В результате у нас создалась новая папка и заметьте 7zFM не ругнулся на наличие длинных путей, он их игнорирует просто и все.
Проверяем, что директория доступна через проводник Windows.
Все прекрасно отображается. Теперь я думаю вы легко сможете переносить, копировать, удалять файлы через 7zFM, когда вам проводник Windows ругается на наличие длинных путей.
Как обойти ограничение длинных путей через символьную ссылку
Такой трюк мы с вами уже проделывали, когда нужно было переносить IMAP профиль у Outlook. Смысл в том, что создается файл в нужном вам месте, и этот файл это просто ярлык ссылающийся на нужный вам файл или папку, после этого путь сокращается и вы можете удалять или создавать все что вам нужно. Откройте командную строку, далее вам нужно иметь два составляющих:
- Путь где будет лежать файл символической ссылки — в моем примере C:\короткий путь
- Длинный путь — C:\Share\WINDOW
Нам поможет команда mklink, где ключ /D создает ссылку на каталог
Слишком длинный путь к источнику
Описание
При попытке удалить или переместить файл, появляется ошибка:
Слишком длинный путь к источнику.
Файловая система не поддерживает такие длинные имена исходных файлов. Попробуйте перенести файл в папку с меньшей длинной пути или укажите более короткое имя файла и повторите попытку.
Причина
По умолчанию, операционная система Windows настроена на блокирование действий над файлами в проводнике, путь к которым более 255 символов.
Решение
Способ 1. Уменьшаем путь до файла
Есть несколько способов сократить путь до нужной нам папки.
1. Переименовываем все папки, в которые вложен наш файл, на менее длинные названия. Когда путь сократится, можно выполнить удаление или перемещение.
2. Создаем символьную ссылку на конечный путь. Это можно сделать командой:
mklink /d «C:\Папка0» «C:\Папка\Папка 2\Папка 3\ Папка 4\Папка 5»
* в данном примере перейдя по пути C:\Папка0, мы окажемся в папке C:\Папка\Папка 2\Папка 3\ Папка 4\Папка 5.
3. Сопоставляем папку букве диска с помощью команды subst:
subst S: «C:\Папка\Папка 2\Папка 3\ Папка 4\Папка 5»
* в данном примере мы создадим диск S, который будет вести нас в папку C:\Папка\Папка 2\Папка 3\ Папка 4\Папка 5.
Способ 2. Включаем поддержку длинных файлов
Данный способ поддерживается, начиная с Windows 10 / Server 2016.
Ограничение в 255 символов — пережиток прошлого, необходимый для обеспечения совместимости с другими файловыми системами. Система не будет работать хуже, если данное ограничение отключить.
Открываем реестр (команда regedit) и переходим по пути HKLM\SYSTEM\CurrentControlSet\Control\FileSystem. Находим или создаем ключ LongPathsEnabled с типом REG_DWORD и задаем ему значение 1.
Это же действие из командной строки:
reg delete «HKLM\SYSTEM\CurrentControlSet\Control\FileSystem» /v LongPathsEnabled /f
reg add «HKLM\SYSTEM\CurrentControlSet\Control\FileSystem» /v LongPathsEnabled /t REG_DWORD /d 1
* первая команда, на всякий случай, удалит старый параметр (если его нет, команда вернет ошибку). Вторая — создаст нужный нам ключ.
Способ 3. Far Manager
Устанавливаем программу Far Manager — переходим в нужный каталог и выполняем нужные действия над файлами.
Иногда, данный способ работает только после того, как мы включили поддержку длинных имен (способ 2).
Способ 4. Укорачиваем сетевой путь
Настраиваем сетевой доступ к папке и подключаем ее как сетевой диск. Путь станет меньше.
Например, это можно сделать командой:
net use J: \\server\share /persistent:yes
* данной командой мы создадим диск J, который будет вести на сетевую папку \\server\share.
Способ 5. Используем командную строку
Если нам нужно скопировать или перенести небольшое количество файлов, мы можем воспользоваться командной строкой. Для копирования используем xcopy, для переноса — move.
В чем была проблема?
Если вам удалось решить проблему, поделитесь своим опытом для других. Что помогло:
Неправильный путь приложения
После апгрейда ноутбука (ASUS FX503VD) он стал работать нестабильно. Заменил SSD 128 ГБ на SSD 500 ГБ и Windows 10 Home на Windows 10 Pro. Замена версии Windows вызвана тем, что 2 попытки клонировать систему на новый SSD Samsung 970 Evo Plus не удались. Почему так получилось, я не вполне могу описать, так как апгрейд мне делали спецы из отдела вычислительных систем моей организации. Как я понял, Windows с клона не стартовала.
После агрейда вижу в утилите Просмотр журнала надежности множество событий с указанием на неправильный путь приложения, хотя путь указан правильный. Например:
Неправильный путь приложения: C:\Windows\System32\svchost.exe
Имя проблемного события: APPCRASH
Имя приложения: svchost.exe_DiagTrack
Версия приложения: 10.0.17134.556
Отметка времени приложения: f23cada5
Имя модуля с ошибкой: ntdll.dll
Версия модуля с ошибкой: 10.0.17134.799
Отметка времени модуля с ошибкой: 7f828745
Код исключения: cfffffff
Смещение исключения: 000000000009e0f4
Версия ОС: 10.0.17134.2.0.0.256.48
Дополнительные сведения 1: 2446
Дополнительные сведения 2: 24468b778d0fa86502f808ba3a29fd14
Дополнительные сведения 3: 2f61
Дополнительные сведения 4: 2f61c36fc81834882a438a4ad33a7aa1
Дополнительные сведения о проблеме
ИД контейнера: 5d01d0cea0670bd2cad1c05d6f66ff0e (1932537222652165902)
Сбойные приложения все расположены на новом диске, чаще других были GoogleChrome, SkypeApp, Edge. Обновил все драйверы, включая драйвер SSD, проверил на вирусы, проверил SSD, память, в общем проделал всё, что рекомендовано в этой ветке: https://answers.microsoft.com/ru-ru/windows/forum/games_windows_10/%D0%BD%D0%B5%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB/4198e1bd-23c7-4520-b955-011ed6b84cab
Ещё были сообщения о нехватке памяти, в основном в GoogleChrome. Отключил аппаратное ускорение в его настройках, а также увеличил память с 8 до 16 ГБ. После этого прошел пока только 1 день и был только один сбой, описание которого приведено выше, причем внешне он себя ничем не проявил, есть только запись в журнале событий.
Я уже подумываю о том, чтобы вернуть старый SSD и понаблюдать, будет ли система работать стабильнее. Что можно ещё попробовать сделать?
Ответы (12)
* Попробуйте выбрать меньший номер страницы.
* Введите только числа.
* Попробуйте выбрать меньший номер страницы.
* Введите только числа.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
1 пользователь нашел этот ответ полезным
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Здравствуйте.
Выложите скриншот страницы Параметры-Обновление и безопасность-Активация.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Здравствуйте
1. Чем клонировали систему? Каким средством или софтом?
2. Проверьте ОС:
В Командной строке (или PowerShell) от имени Администратора (правой кнопкой мыши на кнопке Пуск) выполните по очереди:
DISM.exe /Online /Cleanup-image /Restorehealth -после ввода дождитесь окончания
SFC.exe /SCANNOW -после ввода дождитесь окончания
2. Проверка выявила некоторые проблемы:
C:\Program Files\Far Manager>DISM.exe /Online /Cleanup-image /Restorehealth
Cистема DISM
Версия: 10.0.17134.1
Версия образа: 10.0.17134.915
[==========================100.0%==========================] Восстановление выполнено успешно.
Операция успешно завершена.
C:\Program Files\Far Manager>SFC.exe /SCANNOW
Начато сканирование системы. Этот процесс может занять некоторое время.
Начало стадии проверки при сканировании системы.
Проверка 100% завершена.
Программа защиты ресурсов Windows обнаружила поврежденные файлы и успешно
их восстановила.
Подробные сведения см. в файле CBS.Log, который находится по следующему пути:
windir\Logs\CBS\CBS.log. Например, C:\Windows\Logs\CBS\CBS.log. Подробные сведения
включены в файл журнала, предоставляемый флагом /OFFLOGFILE.
Лог-файл очень большой, чтобы его можно было сюда скопировать. Пока не ясно, помогло ли это восстановление.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Здравствуйте
1. Чем клонировали систему? Каким средством или софтом?
2. Проверьте ОС:
В Командной строке (или PowerShell) от имени Администратора (правой кнопкой мыши на кнопке Пуск) выполните по очереди:
DISM.exe /Online /Cleanup-image /Restorehealth -после ввода дождитесь окончания
SFC.exe /SCANNOW -после ввода дождитесь окончания
1. Систему (Windows 10 Домашняя для одного языка) пытались клонировать с помощью двух разных версий Acronis. Так как в ноутбуке только один слот SSD, образ старого SSD записывался на внешний диск, потом в слот вставлялся новый SSD и на него копировался образ. Что спецы из отдела вычислительных систем моей организации делали дальше, я не знаю. Я только видел синий экран: Восстановление системы не удалось. Гипотеза этих «спецов» была в том, что в системе не было драйвера для SSD Samsung EVO 970 Plus, так как это очень новый SSD.
Поэтому была выполнена чистая установлена Windows 10 Pro на отформатированный SSD.
2. Ответ см. в другом посте.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.