Una de las principales dificultades que ha presentado Windows desde la introducción de los nombres largos es el tratamiento de las rutas muy largas, valga la redundancia. Hasta ahora ha habido un límite práctico de 260 caracteres determinado por la constante MAX_PATH (incluye el carácter nulo que termina las cadenas en C) para la mayoría de las aplicaciones. Varias funciones de las API de Windows que operan con ficheros y directorios aceptan en su versión Unicode el prefijo especial "\\?" para poder usar rutas más largas. Sin embargo, este modo de operación presenta restricciones, no se extiende de forma coherente a todas las API de Windows y no todas las aplicaciones han conseguido adaptarse para aprovecharlo (incluso .NET tuvo que definir la excepción PathTooLongException). Véase Naming Files, Paths, and Namespaces en MSDN.
Me he enterado por casualidad de una novedad a este respecto en las últimas compilaciones Insider. Una nueva política permite que las aplicaciones puedan emplear rutas largas de forma transparente, tanto las de la tienda como las de escritorio que incorporen en su manifiesto la etiqueta longPathsAware igual a "true" (misma sección windowsSettings que dpiAware). Cabe esperar que el propio explorador de Windows se convierta en ejemplo, pero habrá que ver cómo se comportan los programas que invoquen funciones del "shell" de forma directa o indirecta, así como las extensiones que hacen "gancho" al explorador. Probablemente a medida que se acerque la publicación de la nueva versión de Windows 10 Microsoft expondrá más información y guías de compatibilidad en MSDN. Parece ser que ya en la compilación 14332 existe parte de la infraestructura: hay referencias al valor LongPathsEnabled, Ntdll.dll incluye la función RtlAreLongPathsEnabled y Kernelbase.dll la usa. La biblioteca Ntdll.dll de la 14352 sí menciona longPathAware e implementa la función de consulta RtlIsLongPathAwareProcessByManifest.
El límite de 260 caracteres en NTFS desaparecerá en el Anniversary Update (menos lobos, Microsoft Insider)
How to enable NTFS Long Paths in Windows 10
WalkingCat en Twitter: "new Policy in 14352: LongPathsEnabled = Enable NTFS long paths (>260 chars) for manifested Win32 or Store apps."
La ruta del registro en el segundo artículo es errónea, se refiere realmente a HKLM\System\CurrentControlSet\Control\FileSystem. El valor se llama LongPathsEnabled, eso sí y es de tipo DWORD: cero, inhabilitado, tal como están las cosas ahora; distinto de cero, habilitado.
Me he enterado por casualidad de una novedad a este respecto en las últimas compilaciones Insider. Una nueva política permite que las aplicaciones puedan emplear rutas largas de forma transparente, tanto las de la tienda como las de escritorio que incorporen en su manifiesto la etiqueta longPathsAware igual a "true" (misma sección windowsSettings que dpiAware). Cabe esperar que el propio explorador de Windows se convierta en ejemplo, pero habrá que ver cómo se comportan los programas que invoquen funciones del "shell" de forma directa o indirecta, así como las extensiones que hacen "gancho" al explorador. Probablemente a medida que se acerque la publicación de la nueva versión de Windows 10 Microsoft expondrá más información y guías de compatibilidad en MSDN. Parece ser que ya en la compilación 14332 existe parte de la infraestructura: hay referencias al valor LongPathsEnabled, Ntdll.dll incluye la función RtlAreLongPathsEnabled y Kernelbase.dll la usa. La biblioteca Ntdll.dll de la 14352 sí menciona longPathAware e implementa la función de consulta RtlIsLongPathAwareProcessByManifest.
El límite de 260 caracteres en NTFS desaparecerá en el Anniversary Update (menos lobos, Microsoft Insider)
How to enable NTFS Long Paths in Windows 10
WalkingCat en Twitter: "new Policy in 14352: LongPathsEnabled = Enable NTFS long paths (>260 chars) for manifested Win32 or Store apps."
La ruta del registro en el segundo artículo es errónea, se refiere realmente a HKLM\System\CurrentControlSet\Control\FileSystem. El valor se llama LongPathsEnabled, eso sí y es de tipo DWORD: cero, inhabilitado, tal como están las cosas ahora; distinto de cero, habilitado.
Comentario