Partager via


Atténuation : Normalisation des chemins d’accès

À partir des applications qui ciblent .NET Framework 4.6.2, la normalisation des chemins d’accès a été modifiée dans .NET Framework.

Qu’est-ce que la normalisation des chemins d’accès ?

La normalisation d’un chemin d’accès implique la modification de la chaîne qui identifie un fichier ou un chemin d’accès afin qu’il soit conforme à un chemin d’accès valide sur le système d’exploitation cible. La normalisation implique généralement :

  • La mise en forme canonique des composants et séparateurs de répertoires.

  • L’application du répertoire actuel à un chemin d’accès relatif.

  • L’évaluation du répertoire relatif (.) ou du répertoire parent (..) dans un chemin d’accès.

  • La suppression des caractères spécifiés.

Les changements

À compter des applications qui ciblent .NET Framework 4.6.2, la normalisation des chemins a été modifiée des façons suivantes :

  • Le runtime défère à la fonction GetFullPathName du système d’exploitation pour normaliser les chemins d’accès.

  • La normalisation n’implique plus la suppression de la fin des segments de répertoire (comme un espace à la fin d’un nom de répertoire).

  • Prise en charge de la syntaxe du chemin d’appareil avec une confiance totale, y compris \\.\ et, pour les API d’E/S de fichiers dans mscorlib.dll, \\?\.

  • Le runtime ne valide pas les chemins d’accès de syntaxe de périphérique.

  • L’utilisation de la syntaxe de périphérique pour accéder aux autres flux de données est prise en charge.

Impact

Pour les applications qui ciblent .NET Framework 4.6.2 ou version ultérieure, ces modifications sont activées par défaut. Elles améliorent les performances tout en activant des méthodes d’accès à des chemins précédemment inaccessibles.

Les applications qui ciblent .NET Framework 4.6.1 et les versions antérieures, mais s’exécutent sur .NET Framework 4.6.2 ou une version ultérieure ne sont pas concernées par ce changement.

Limitation des risques

Les applications qui ciblent .NET Framework 4.6.2 ou version ultérieure peuvent désactiver ce changement et utiliser la normalisation héritée en ajoutant le code suivant à la section <runtime> du fichier de configuration de l’application :

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

Les applications qui ciblent .NET Framework 4.6.1 ou version antérieure, mais qui s’exécutent sous .NET Framework 4.6.2 ou version ultérieure peuvent activer les changements apportés à la normalisation des chemins en ajoutant la ligne suivante à la section <runtime> du fichier de configuration de l’application :

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

Voir aussi