Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Довгі шляхи в Windows 10.

Практично кожен користувач Windows рано чи пізно стикається з помилкою "занадто довгий шлях" (path too long). Помилка ця виникає при роботі з файлами або папками, у яких повний шлях перевищує значення в 260 символів.

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

C: \ directory \ subdirectory \ filename

Відповідно, якщо сума всіх компонентів шляху більше 260 символів, то шлях вважається занадто довгим. Більшість додатків Windows не вміють працювати з такими шляхами і при зверненні до файлу \ папці видадуть приблизно таке повідомлення:



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

\\? \ C: \ directory \ subdirectory \ filename

У Windows 10 (починаючи з версії 1607) з'явилася можливість відключити перевірку MAX_PATH і використовувати довгі шляхи без префікса \\? \.Зробити це можна двома способами - за допомогою групових політик або шляхом редагування реєстру. Ми розглянемо обидва способи, почнемо з політик.

Групові політики

Насамперед відкриваємо редактор локальних групових політик, для чого тиснемо клавіші Win + R і виконуємо команду gpedit.msc.



Потрібна нам політика знаходиться в розділі Конфігурація комп'ютера \ Адміністративні шаблони \ Система \ Файлова система (Computer configuration \ Administrative templates \ System \ Filesystem) і називається Включити довгі шляхи Win32 (Enable Win32 long paths).



Для активації підтримки довгих шляхів треба перевести політику в стан «Включено».



Реєстр

Для включення підтримки довгих шляхів через реєстр необхідно знайти в розділі HKLM \ System \ CurrentControlSet \ Control \ FileSystem параметр з ім'ям LongPathEnabled і задати його значення рівним 1.



Цю операцію можна зробити за допомогою PowerShell, командою:

Set-ItemProperty -Path HKLM: \ SYSTEM \ CurrentControlSet \ Control \ FileSystem -Name LongPathsEnabled -Value 1

В обох випадках потрібно перезавантажити комп'ютер.Після перезавантаження зміни вступлять в силу і для шляхів буде діяти тільки обмеження файлової системи NTFS (32767 символу), перевищити яке вам навряд чи вдасться. Однак це зовсім не означає, що можна розслабитися. У деяких додатках перевірка MAX_PATH закладена в коді, тому по можливості краще не перевищувати це обмеження.

Доповнення

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



true

А тепер про сумне.Як раптово виявилося, в провіднику Windows підтримка довгих шляхів не реалізована !!! Один з розробників Microsoft з цього приводу сказав приблизно наступне:

"Ця функція не готова для включення в Windows Explorer. Вам потрібно почекати, поки Microsoft не включить її в Explorer, або використовувати сторонній інструмент управління файлами, який сумісний з довгими шляхами."

Це було сказано ще в 2016 році. Але, судячи з усього, розробники на дану проблему просто забили. На даний момент в версії 1 903 провідник все так само не підтримує довгі шляхи файлів. Ось так