Są dwie rzeczy, o których nie wspomniano w istniejących odpowiedziach.
- Możesz użyć prefiksu ścieżki o zwiększonej długości, aby uzyskać dostęp do długich ścieżek
- W Windows 10 możesz włączyć obsługę długich ścieżek do ogólnego użytku - zauważ jednak, że nie wszystkie aplikacje będą działać z długimi ścieżkami, powinieneś przetestować starsze oprogramowanie. Tylko oprogramowanie z odpowiednim wpisem manifestu będzie mogło z tego skorzystać.
Long Path Prefix
API Windows posiada specjalną funkcję, która obsługuje nazwy ścieżek Unicode o długości do 32k znaków (każdy element ma długość do 255 znaków).
Jest to często mylnie nazywane nazewnictwem UNC, ale nie jest ono powiązane.
Prefiksem używanym przez API do określania długich ścieżek Unicode jest `\?Są dwie rzeczy, o których nie wspomniano w istniejących odpowiedziach.
- Możesz użyć prefiksu ścieżki o zwiększonej długości, aby uzyskać dostęp do długich ścieżek
- W Windows 10 możesz włączyć obsługę długich ścieżek do ogólnego użytku - zauważ jednak, że nie wszystkie aplikacje będą działać z długimi ścieżkami, powinieneś przetestować starsze oprogramowanie. Tylko oprogramowanie z odpowiednim wpisem manifestu będzie mogło z tego skorzystać.
Long Path Prefix
API Windows posiada specjalną funkcję, która obsługuje nazwy ścieżek Unicode o długości do 32k znaków (każdy element ma długość do 255 znaków).
Jest to często mylnie nazywane nazewnictwem UNC, ale nie jest ono powiązane.
Prefiksem używanym przez API do określania długich ścieżek Unicode jest , jak w:
\?\D:\very long path
Nazwy UNC są zwykle używane w odniesieniu do ścieżek na zdalnych serwerach w postaci \servername\path name\file name
. Możesz połączyć to z prefiksem długiej ścieżki, więc: \?\UNC\server\share
Zauważ, że niektóre, słabo napisane, ale niestety dość powszechne, aplikacje nie obsługują ścieżek plików UNC ani prefiksu długiej ścieżki.
Odwołanie: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath
Obsługa długich ścieżek
Jest to opcja, która została dodana do ostatnich wersji Windows 10. Nie jest ona domyślnie włączona w momencie pisania, ponieważ wymaga specyficznej obsługi aplikacji. Co ciekawe, PowerShell ma wbudowaną obsługę, więc włączenie tej opcji pozwoli na korzystanie z długich ścieżek bezpośrednio w skryptach PowerShella.
Możesz ją aktywować poprzez edytor zasad grupy, jeśli posiadasz wersję Windows z tą opcją. Można też po prostu skorzystać z następującej zmiany w rejestrze. Jak zawsze, przed dokonaniem jakiejkolwiek zmiany należy utworzyć kopię zapasową sekcji rejestru, którą się zmienia.
- Uruchom
regedit.exe
.
- Potwierdź komunikat UAC.
- Przejdź do klucza:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
- Utwórz lub zmień klucz
LongPathsEnabled
.
- Jeśli nie istnieje, kliknij prawym przyciskiem myszy na Policje oraz wybierz z menu polecenie Nowe >Dword (32-bitowe).
- Ustaw
LongPathsEnabled
na 1
aby włączyć.
Wszelkie aplikacje z odpowiednimi manifestami będą miały dostęp do standardowych długich ścieżek POSIX. Powinno to obejmować aplikacje Windows Store.
Referencje: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
UPDATE 2017-04-09
@maoizm zwrócił uwagę na problem z kluczem rejestru powyżej więc zrobiłem some more digging . Wygląda na to, że można teraz ustawić obsługę długich nazw plików za pomocą klawisza systemowego:
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
Nadal działa to tylko dla aplikacji, które są jednak specjalnie ustawione do jej używania (wymaga wpisu w manifest.xml aplikacji).
Należy również zauważyć, że nie można używać nazw ścieżek względnych przy użyciu tej metody.