Condividi tramite


Mitigazione: normalizzazione del percorso

A partire dalle app destinate a .NET Framework 4.6.2, la normalizzazione del percorso in .NET Framework è stata modificata.

Che cos'è la normalizzazione del percorso?

La normalizzazione di un percorso comporta la modifica della stringa che identifica un percorso o un file in modo che sia conforme a un percorso valido nel sistema operativo di destinazione. In genere, la normalizzazione implica:

  • La conversione in forma canonica dei separatori di directory e dei componenti.

  • L'applicazione della directory corrente in un percorso relativo.

  • Valutazione della directory relativa (.) o della directory padre (..) in un percorso.

  • La rimozione di caratteri specificati.

Modifiche

A partire dalle app destinate a .NET Framework 4.6.2, la normalizzazione del percorso è cambiata nei modi seguenti:

  • Il runtime viene rinviato alla funzione GetFullPathName del sistema operativo per normalizzare i percorsi.

  • La normalizzazione non consiste più nel rimuovere la fine dei segmenti di directory (ad esempio uno spazio alla fine di un nome di directory).

  • Supporto per la sintassi del percorso dispositivo in attendibilità totale, tra cui \\.\ e, per le API del file I/O in mscorlib.dll, \\?\.

  • Il runtime non convalida i percorsi di sintassi del dispositivo.

  • È supportato l'uso della sintassi del dispositivo per accedere ai flussi di dati alternativi.

Impatto

Per le app destinate a .NET Framework 4.6.2 o versioni successive, queste modifiche sono attivate per impostazione predefinita. Dovrebbero migliorare le prestazioni consentendo ai metodi di accedere ai percorsi precedentemente inaccessibili.

Le applicazioni destinate a .NET Framework 4.6.1 e versioni precedenti ma in esecuzione in .NET Framework 4.6.2 o versioni successive non sono interessate da questa modifica.

Mitigazione

Le app destinate a .NET Framework 4.6.2 o versioni successive possono rifiutare esplicitamente questa modifica e usare la normalizzazione legacy aggiungendo quanto segue alla<> sezione runtime del file di configurazione dell'applicazione:

<runtime>  
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
</runtime>  

Le app destinate a .NET Framework 4.6.1 o versioni precedenti ma in esecuzione in .NET Framework 4.6.2 o versioni successive possono abilitare le modifiche alla normalizzazione del percorso aggiungendo la riga seguente alla <sezione runtime> del file di configurazione dell'applicazione:

<runtime>  
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
</runtime>  

Vedere anche