Windows 10 Anniversary Update (a partir de la build 14352) y las rutas largas

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • RSola
    Senior Member
    • Jan
    • 288

    Windows 10 Anniversary Update (a partir de la build 14352) y las rutas largas

    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.
    Ramón Sola
  • jmtella
    Administrator
    • Nov
    • 20685

    #2
    Con las DLL que hacen hook al explorer... (y codecs, etc..) va a haber follones...

    Comentario

    • Ivan
      Senior Member
      • Dec
      • 206

      #3
      No les queda mas remedio. Con "Rutitas tan "Cortitas" como esta:
      C:\Users\Nombredeusuario\AppData\Local\Packages\Mi crosoft.MicrosoftEdge_8wekyb3d8bbwe\AC\MicrosoftEd ge\User\Default\DataStore\Data\Nouser1\120712-0049\Favorites
      --
      Saludos. Ivan

      Comentario

      • noSign
        Super Moderator
        • Dec
        • 4429

        #4
        Habilitarlo.:

        Con GPO.:
        Directiva del equipo local > Configuración del equipo > Plantillas administrativas > Sistema > Sistema de archivos > NTFS


        Aquí veremos una opción llamada “Enable NTFS long paths“.
        Habilitarla, reiniciar PC.

        Sin GPO.:
        KEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\ CurrentVersion\Group Policy Objects\ {48981759-12F2-42A6-A048-028B3973495F} Machine\System\CurrentControlSet\Policies
        Aquí buscamos la clave “LongPathsEnabled” (Si no existe, la creamos como valor DWORD 32) y la asignamos el valor “1“.
        Cerramos el editor de registro y reiniciamos el sistema de manera que, cuando vuelva a arrancar, dicha restricción ya no exista.

        Con GPO es más factible que funcione, por tanto usarla en versiones Pro.

        Comentario

        • RSola
          Senior Member
          • Jan
          • 288

          #5
          Voy a tener que examinarlo detenidamente, pero parece que la política no está definida de forma correcta. La clave en la que Ntdll consulta el valor LongPathsEnabled es System\CurrentControlSet\Control\FileSystem, no System\CurrentControlSet\Policies.
          Ramón Sola

          Comentario


          • Enrique
            Enrique comentó
            Editar un comentario
            Exacto!
            Precisamente la semana pasada estuve comprobando esta política (en la clave Policies) y me quedé sorprendido porque no me funcionó, ni por el registro ni por directiva. Pensé: estarán trabajando en ello, pero no está habilitada todavía esa política... Voy a comprobar esa otra clave y os comento.
        • noSign
          Super Moderator
          • Dec
          • 4429

          #6
          Originalmente publicado por RSola Ver Mensaje
          Voy a tener que examinarlo detenidamente, pero parece que la política no está definida de forma correcta. La clave en la que Ntdll consulta el valor LongPathsEnabled es System\CurrentControlSet\Control\FileSystem, no System\CurrentControlSet\Policies.
          Esa es la ruta para el master file table NtfsMftZoneReservation y la antigua compatibilidad con nombres de 8 letras para poder extenderla.

          Comentario

          • Enrique
            Senior Member
            • Aug
            • 147

            #7
            Nada... no furula
            ----
            Saludos,
            Enrique Cortés

            Comentario

            • noSign
              Super Moderator
              • Dec
              • 4429

              #8
              Originalmente publicado por Enrique Ver Mensaje
              Nada... no furula
              ¿Windows 10 build 14352?

              Comentario


              • Enrique
                Enrique comentó
                Editar un comentario
                si, claro, la última build
            • jmtella
              Administrator
              • Nov
              • 20685

              #9
              Originalmente publicado por RSola Ver Mensaje
              Voy a tener que examinarlo detenidamente, pero parece que la política no está definida de forma correcta. La clave en la que Ntdll consulta el valor LongPathsEnabled es System\CurrentControlSet\Control\FileSystem, no System\CurrentControlSet\Policies.
              Estoy notando cosas muy raras en esta build que quizá tengan que ver con lo que comentas.
              En instalación en limpio, hay momentos que el el Windlows ClientServer se embucla llevándose la CPU. Por ejemplo, si en vez de conectarme en local, accesdo por RemoteDesktop... a los 10 / 15 minutos me desconecta y ya no hay forma de entrar, ni en local ni en remoto. Para saber lo que pasaba, instalé el producto Thinstuff que me permite multiples sesiones de RemoteDesktop... y pude comprobar lo del ClientServer... Únicamente si abro primero una sesión en local, y luego una remota (con el mismo o con otro usuario) es cuando no se cuelga...

              Comentario

              Trabajando...
              X