Hay dos cosas que no se mencionan en las respuestas existentes.
- Puedes usar el prefijo de camino de longitud extendida para acceder a los caminos largos
- Con Windows 10, puede habilitar el soporte para rutas largas para uso general - sin embargo, tenga en cuenta que no todas las aplicaciones funcionarán con rutas largas, debería probar software más antiguo. Sólo el software con una entrada de manifiesto apropiada podrá hacer uso de esto.
Prefijo de camino largo
La API de Windows tiene una función especial que admite nombres de caminos Unicode de hasta 32k caracteres de longitud (cada elemento tiene hasta 255 caracteres de longitud).
A menudo se hace referencia a esto erróneamente como denominación UNC pero no lo es aunque esté relacionado.
El prefijo que se utiliza para indicar a la API que utilice rutas largas de Unicode es `\?Hay dos cosas que no se mencionan en las respuestas existentes.
- Puedes usar el prefijo de camino de longitud extendida para acceder a los caminos largos
- Con Windows 10, puede habilitar el soporte para rutas largas para uso general - sin embargo, tenga en cuenta que no todas las aplicaciones funcionarán con rutas largas, debería probar software más antiguo. Sólo el software con una entrada de manifiesto apropiada podrá hacer uso de esto.
Prefijo de camino largo
La API de Windows tiene una función especial que admite nombres de caminos Unicode de hasta 32k caracteres de longitud (cada elemento tiene hasta 255 caracteres de longitud).
A menudo se hace referencia a esto erróneamente como denominación UNC pero no lo es aunque esté relacionado.
El prefijo que se utiliza para indicar a la API que utilice rutas largas de Unicode es como en:
\?\D:\very long path
Los nombres UNC se utilizan normalmente al referirse a las rutas de los servidores remotos de la forma \servername\path name\file name
. Puede combinar esto con el prefijo de ruta larga así que: \?\UNC\server\share
Tenga en cuenta que algunas aplicaciones, pobremente escritas pero tristemente bastante comunes, no soportan rutas de archivos UNC ni el prefijo de ruta larga.
Referencia: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath
Soporte para rutas largas
Esta es una opción que ha sido añadida a las versiones recientes de Windows 10. En el momento de escribir este documento, no está activada de forma predeterminada, ya que requiere un soporte específico para la aplicación. Curiosamente, PowerShell tiene soporte incorporado, por lo que al habilitar esta opción se permitirá que las rutas largas se usen directamente en los scripts de PowerShell.
Puede activarla mediante el editor de directiva de grupo si tiene una versión de Windows con eso. O simplemente puede usar el siguiente cambio en el Registro. Como siempre, haga una copia de seguridad de la sección del registro que está cambiando antes de hacer nada.
- Ejecute
regedit.exe
.
- Confirme el mensaje UAC.
- Navegue hasta la tecla:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
- Crear o cambiar la tecla
LongPathsEnabled
.
- Si no existe, haga clic con el botón derecho del ratón en Políticas y seleccione Nuevo > Valor de la palabra (32 bits) en el menú.
- Configure
LongPathsEnabled
en 1
para habilitarlo.
Cualquier aplicación con entradas de manifiesto apropiadas tendrá ahora acceso a los caminos largos estándar de POSIX. Esto debería incluir las aplicaciones de Windows Store.
Referencia: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
ACTUALIZACIÓN 2017-04-09
@maoizm señaló un problema con la clave de registro anterior, así que hice un poco más de investigación . Parece que ahora se puede establecer el soporte para nombres largos de archivos con una clave de sistema:
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
Sin embargo, esto sólo funciona para aplicaciones que estén específicamente establecidas para usarlo (requiere una entrada en el manifest.xml de la aplicación).
También debe tener en cuenta que no puede usar nombres de ruta relativos con este método.