Чи все ще існує проблема MAX_PATH у Windows 10


79

Чи може хтось повідомити нам / мені, чи проблема MAX_PATH все ще існує у (технічний попередній перегляд) Windows 10. І якщо вона існує: Скільки символів може мати шлях та ім’я окремого файлу?


12
Будь ласка, залиште коментар, коли ви голосуєте проти. Наприклад, URL-адреса, за якою легко знайти відповідь. Або що не так із самим запитанням.
dkeck

спробуйте побудувати 14352 та встановіть запис GP
magicandre1981

Або скористайтеся параметром групової політики, або змініть реєстр вручну. Див. News.slashdot.org/story/16/05/31/0012222/…
Холмб

Нещодавно я це бачив, коли встановлював Python, оскільки після встановлення у них є можливість вимкнути MAX_PATHліміт. Чому в кінцевому підсумку хтось має назву шляху довше 260 символів?
Ungeheuer

Відповіді:


73

Ця проблема завжди буде присутня в Windows, щоб зберегти сумісність із старим програмним забезпеченням. Для вирішення цієї проблеми використовуйте синтаксис імен у стилі NT "\\?\D:\very long path" .

У Windows 10 (версія 1607 - ювілейне оновлення) та Windows Server 2016, схоже, у вас є можливість ігнорувати проблему MAX_PATH, замінивши запис групової політикиenable NTFS long paths під Computer Configuration-> Admin Templates-> System-> FileSystem:

введіть тут опис зображення

введіть тут опис зображення

Програми повинні мати запис, longPathAwareподібний до DPIAware, у маніфесті програми.

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

14
Чому Linux або Mac не зіткнулися з цими проблемами сумісності? Чому не можна розширити API файлів не Unicode Win32 (з деякими умовами в існуючих функціях обробки вводу-виводу), щоб мати можливість використовувати, наприклад, MAX_PATH2 = 4096 (або розумне динамічне розподіл). Тоді старе програмне забезпечення використовуватиме лише застарілу частину реалізації. Але нове програмне забезпечення, особливо продукти Microsoft (включаючи cmd, explorer, PowerShell, VS), має використовувати нові функції. ОС повинна затінити всю цю технічну історію: "Просто використовуйте dev: \ path \ file.ext, і я вирішу, який найкращий вибір."
dkeck

4
запитайте цього Microsoft. Ми не можемо сказати вам, чому і як вони приймали рішення з цього питання.
magicandre1981

6
Так, мені насправді все одно, як вони це роблять, але чому вони все ще змушують нас поважати MAX_PATH у 2015 році ...
Райан Манн

5
260 символів має бути достатньо для всіх;)
paulm

8
@AndrewS Провідник ще не знає про довгий шлях. вони все ще працюють над цим
magicandre1981

6

Ось деякий код ansible, щоб дозволити довгі шляхи, щоб уникнути всього цього, натискання у відповіді @ magicandre1981. Це тестували на Windows Server 2016, він також повинен працювати на Windows 10.

- name: Remove filesystem path length limitations
  win_regedit:
    path: HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem
    name: LongPathsEnabled
    type: dword
    data: 1
    state: present

1

Так, він все ще існує. Щойно натрапив на проблему, і звичайний метод зіставлення мережевого диска з ним, щоб скоротити шлях, здавалося, не давав мені відкривати файли, але це дозволяло мені перейменовувати та переміщувати їх.


1
substце ваш друг
Евандрікс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.