Skip to main content

Come eliminare il limite di 255-260 caratteri nei path di file e cartelle in Windows 10

Introduzione

Se siete sviluppatori, sistemisti o utenti esperti in ambiente Windows è molto probabile che siate già al corrente della fastidiosa limitazione a 255-260 caratteri della dimensione di qualsiasi path di sistema – ovvero del percorso di file e cartelle. Nel caso in cui non ne abbiate mai sentito parlare, ecco un breve riepilogo:

In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters. A local path is structured in the following order: drive letter, colon, backslash, name components separated by backslashes, and a terminating null character. For example, the maximum path on drive D is “D:\some 256-character path string<NUL>” where “<NUL>” represents the invisible terminating null character for the current system codepage. (The characters < > are used here for visual clarity and cannot be part of a valid path string.) [extract from this MSDN official guide].

A ben vedere si tratta di una singolare caratteristica residuale del filesystem NTFS, che oggi come oggi non ha più senso. Al tempo stesso non si tratta di un problema che riguarda la maggior parte degli utenti standard, che raramente avranno bisogno di creare strutture di cartelle annidate così lunghe.

Le cose cambiano non poco per gli sviluppatori e gli amministratori di sistema che hanno necessità di lavorare con strumenti pensati in ottica Linux, come ad esempio il package manager NPM, il quale viene utilizzato per distribuire numerosi software e librerie che fanno un largo uso di cartelle annidate: NodeJS, AngularJS, Angular2, React, SystemJS, solo per citarne alcuni. Le cose si aggravano ulteriormente se questi strumenti vengono utilizzati all’interno di Visual Studio 2015, il quale aggiunge la propria struttura (cartella soluzione + cartella progetto + altre sotto-cartelle come /src/ , /bin/ , /node_modules/  et. al.), che aumentano a dismisura le possibilità di raggiungere il suddetto limite.

 

Non appena questa situazione si verifica il sistema diventa improvvisamente impossibilitato ad accedere a quei file, provocando un gran numero di problemi alle applicazioni: crash improvvisi, errori di compilazione, errori di IIS e molto altro. La situazione peggiora ulteriormente se il problema colpisce cartelle e/o percorsi  utilizzati da task runner come Grunt o Gulp o altri strumenti per automatizzare operazioni di filesystem: questi software saranno impossibilitati a leggere, scrivere, spostare, copiare o elaborare quei file, provocando una serie di errori e/o crash difficili da identificaree che ci daranno certamente più di un grattacapo.

Ecco un classico esempio di crash log di Visual Studio 2015 in conseguenza del raggiungimento del limite di 255-260 caratteri:

E questo è il popup di errore che prelude al suddetto crash:

Ora che abbiamo identificato con successo il problema, non ci resta che elencare i workaround che possiamo utilizzare per risolverlo.

Opzione #1: Accorciare il nostro base path

Potrebbe sembrare scontato, ma il modo più veloce ed efficace per risolvere questo tipo di problema è spesso quello di abbreviare la prima parte del percorso (path) che crea problemi. Nella maggior parte dei casi, infatti, il limite viene superato di poche decine di caratteri, che possiamo ampiamente eliminare rivedendo la struttura di cartelle utilizzata per ospitare il nostro progetto.

Ad esempio, se le nostre soluzioni Visual Studio si trovano all’interno della cartella   C:\Users\<Your Username>\Documents\Visual Studio 2015\Solutions\ , potremmo provare a spostare il contenuto in una cartella come  C:\Solutions\  , accorciando in questo modo tutti i path interni di diverse decine di caratteri.

Opzione  #2: Abilitare la NTFS / Win32 Long Path Policy

Nel caso in cui non volessimo modificare i nostri path di lavoro possiamo adottare una soluzione diversa e probabilmente migliore, a patto di utilizzare un sistema Windows 10: abilitare la NTFS long path policy (o Win32 long path policy, a seconda della versione di Windows 10 installata), eliminando così il problema alla radice.

Secondo quanto riferisce Microsoft, “enabling NTFS/Win32 long paths allows manifested win32 applications and Windows Store applications to access paths beyond the normal 260 char limit per node” . Si tratta proprio di ciò che stiamo cercando di ottenere.

Abilitare questa funzionalità non è difficile, ma è necessario effettuare una piccola modifica alle policy di gruppo di Windows 10 utilizzando lo strumento di sistema noto come Group Policy Editor (o Editor Criteri di Gruppo nella versione italiana). Ecco i passaggi da effettuare:

Pre-Anniversary Update

Se la versione di Windows che stiamo utilizzando è compresa tra la 14352 e la RTM 1607, anche nota come “Anniversary Update“, questo è quello che dobbiamo fare:

  • Eseguire l’Editor Criteri di Gruppo (Group Policy Editor) premendo il Tasto Windows e digitando gpedit.msc, quindi premendo Invio.
  • Navigare in Criteri Computer Locale > Configurazione computer > Modelli Amministrativi > Sistema > File system > NTFS
  • Localizzare l’opzione Abilita percorsi lunghi NTFS e abilitarla con un click.

In alternativa è anche possibile effettuare questo cambiamento modificando le seguenti impostazioni nel registro di sistema:

Post-Anniversary Update

Se la versione di Windows utilizzata è la RTM 1067 o più recente, ovvero da Anniversary Update in poi, la procedura cambia leggermente:

  • Eseguire l’Editor Criteri di Gruppo (Group Policy Editor) premendo il Tasto Windows e digitando gpedit.msc, quindi premendo Invio.
  • Navigare in Criteri Computer Locale > Configurazione computer > Modelli Amministrativi > Sistema > File system.
  • Localizzare l’opzione Abilita percorsi lunghi Win32 e abilitarla con un click.

Questa modifica dovrebbe risolvere il problema, consentendo al sistema di accedere a path aventi lunghezza superiore a 255-260 caratteri.

 

 

 

 

RELATED POSTS

Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane.

Close
Leggi articolo precedente:
Password MySQL scaduta: come risolvere in modo permanente

Se vi siete imbattuti in questo articolo è molto probabile che abbiate scoperto a vostre spese la nuova funzionalità introdotta...

Chiudi