Windows 10: rimozione del limite a 260 caratteri nel path dei file

Come descritto in Naming Files, Paths, and Namespaces
le API di Windows in generale prevedono il limite di 260 caratteri di lunghezza per il path:

“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.”

Esiste anche una versione delle API di Windows Unicode che consente una lunghezza totale del path di 32.767 caratteri:

“The Windows API has many functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters.”

In Windows 10 versione 1607 e successive la limitazione legata al MAX_PATH sono state rimosse dalle API Win32 relative a file directory, ma occorre attivare l’abilitazione all’utilizzo dei path oltre i 260 caratteri:

“Starting in Windows 10, version 1607, MAX_PATH limitations have been removed from common Win32 file and directory functions. However, you must opt-in to the new behavior.”

E’ possibile abilitare l’utilizzo dei path oltre i 260 caratteri tramite la seguente group policy:

Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths

Si noti che come specificato nella descrizione della GPO tale impostazione non essendo memorizzata nella chiave di registro dedicata alle GPO (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\DataStore\Machine) non può essere eliminata se la GPO non è più applicata, questo comportamento viene evidenziato anche con l’icona con una freccia verso il basso con cui è contrassegnata la GPO.

Si noti che l’applet gpedit.msc per l’eventuale impostazione delle GPO locali è disponibile solo per le edizioni Pro o Enterprise di Windows 10.

In alternativa è possibile impostare a 1 il valore LongPathsEnabled di tipo REG_DWORD in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem.