¿El problema MAX_PATH todavía existe en Windows 10?

79

¿Alguien puede decirnos si el problema MAX_PATH todavía existe en (la vista previa técnica de) Windows 10. Y si existe: cuántos caracteres puede tener una ruta y un nombre de archivo individual?

dkeck
fuente
12
Deje un comentario cuando vote en contra. Por ejemplo, alguna URL donde se pueda encontrar fácilmente la respuesta. O qué hay de malo en la pregunta en sí.
dkeck
pruebe la compilación 14352 y configure la entrada GP
magicandre1981
Utilice la configuración de directiva de grupo o cambie el registro manualmente. Ver news.slashdot.org/story/16/05/31/0012222/…
holmb
Recientemente vi esto mencionado cuando instalé Python, ya que tienen una opción después de la instalación para deshabilitar el MAX_PATHlímite. ¿Por qué alguien terminaría con un nombre de ruta de más de 260 caracteres?
Ungeheuer

Respuestas:

73

El problema siempre estará presente en Windows, para mantener la compatibilidad con el software antiguo. Utilice la sintaxis de nombres de estilo NT "\\?\D:\very long path" para solucionar este problema.

En Windows 10 (Versión 1607 - Actualización de aniversario) y Windows Server 2016, parece que tiene una opción para ignorar el problema MAX_PATH anulando una entrada de política de grupoenable NTFS long paths en Computer Configuration-> Admin Templates-> System-> FileSystem:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Las aplicaciones deben tener una entrada longPathAwaresimilar a DPIAware en el manifiesto de la aplicación.

<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>
magicandre1981
fuente
14
¿Por qué Linux o Mac no enfrentaron estos problemas de compatibilidad? ¿Por qué no se puede extender la API de archivos Win32 no Unicode (con algunas condiciones en las funciones de manejo de IO existentes) para poder usar, por ejemplo, MAX_PATH2 = 4096 (o asignación dinámica inteligente)? El software antiguo solo utilizará la parte heredada de la implementación. Pero el nuevo software, especialmente los productos de Microsoft (incluidos cmd, explorer, powershell, VS) deberían hacer uso de las nuevas funciones. El sistema operativo debería ocultar todo este historial técnico: "Simplemente use dev: \ path \ file.ext y yo el sistema operativo decidirá cuál es la mejor opción".
dkeck
4
pregunte a este Microsoft. No podemos decirle por qué y cómo tomaron decisiones sobre este tema.
magicandre1981
6
Sí, realmente no me importa cómo lo hagan, pero ¿por qué todavía nos obligan a respetar MAX_PATH en 2015 ...?
Ryan Mann
5
260 caracteres deberían ser suficientes para cualquiera;)
Paulm
8
@AndrewS the Explorer aún no conoce el camino largo. todavía trabajan en ello
magicandre1981
6

Aquí hay un código ansible para habilitar rutas largas y evitar hacer clic en la respuesta @ magicandre1981. Esto se probó en Windows Server 2016, también debería funcionar en Windows 10.

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

Sí, todavía existe. Acabo de tener un problema ahora y el método habitual de asignarle una unidad de red para acortar la ruta no me permitió abrir los archivos, pero me permitió cambiar el nombre y moverlos.

Gareth Oates
fuente
1
substes tu amigo
evandrix