Entschärfung: PfadnormalisierungMitigation: Path Normalization

Von Apps für die Zielplattform .NET Framework 4.6.2.NET Framework 4.6.2 an hat sich die Pfadnormalisierung in .NET Framework geändert.Starting with apps the target the .NET Framework 4.6.2.NET Framework 4.6.2, path normalization in the .NET Framework has changed.

Was ist Pfadnormalisierung?What is path normalization?

Das Normalisieren eines Pfads beinhaltet das Verändern der Zeichenfolge, die einen Pfad oder eine Datei kennzeichnet, in einer Weise, dass sie einem gültigen Pfad im Zielbetriebssystem entspricht.Normalizing a path involves modifying the string that identifies a path or file so that it conforms to a valid path on the target operating system. Normalisierung umfasst ist in der Regel:Normalization typically involves:

  • Die Kanonisierung von Komponenten- und Verzeichnistrennzeichen.Canonicalizing component and directory separators.

  • Die Anwendung des aktuellen Verzeichnisses auf einen relativen Pfad.Applying the current directory to a relative path.

  • Die Auswertung des relativen Verzeichnisses (.) oder des übergeordneten Verzeichnisses (..) in einem Pfad.Evaluating the relative directory (.) or the parent directory (..) in a path.

  • Das Verkürzen um angegebene Zeichen.Trimming specified characters.

Die ÄnderungenThe changes

Von Apps für die Zielplattform .NET Framework 4.6.2.NET Framework 4.6.2 an hat sich die Pfadnormalisierung in folgender Weise geändert:Starting with apps that target the .NET Framework 4.6.2.NET Framework 4.6.2, path normalization has changed in the following ways:

  • Die Runtime greift auf die Funktion GetFullPathName des Betriebssystems zurück, um Pfade zu normalisieren.The runtime defers to the operating system's GetFullPathName function to normalize paths.

  • Die Normalisierung beinhaltet nicht mehr das Verkürzen des Endes von Verzeichnissegmenten (etwa im Fall eines Leerzeichens am Ende eines Verzeichnisnamens).Normalization no longer involves trimming the end of directory segments (such as a space at the end of a directory name).

  • Unterstützung für Gerätepfadsyntax mit vollem Vertrauen, einschließlich \\.\ und \\?\ für Datei-E/A-APIs in mscorlib.dll.Support for device path syntax in full trust, including \\.\ and, for file I/O APIs in mscorlib.dll, \\?\.

  • Die Runtime überprüft Gerätesyntaxpfade nicht.The runtime does not validate device syntax paths.

  • Die Verwendung von Gerätesyntax für den Zugriff auf alternative Datenströme wird unterstützt.The use of device syntax to access alternate data streams is supported.

AuswirkungenImpact

Für Apps mit der Zielplattform .NET Framework 4.6.2.NET Framework 4.6.2 oder höher sind diese Änderungen standardmäßig aktiviert.For apps that target the .NET Framework 4.6.2.NET Framework 4.6.2 or later, these changes are on by default. Sie sollten die Leistung verbessern und Methoden zugleich den Zugriff auf zuvor nicht zugängliche Pfade ermöglichen.They should improve performance while allowing methods to access previously inaccessible paths.

Apps mit der Zielplattform .NET Framework 4.6.1.NET Framework 4.6.1 und früheren Versionen, die unter .NET Framework 4.6.2.NET Framework 4.6.2 oder höher ausgeführt werden, sind von dieser Änderung nicht betroffen.Apps that target the .NET Framework 4.6.1.NET Framework 4.6.1 and earlier versions but are running under the .NET Framework 4.6.2.NET Framework 4.6.2 or later are unaffected by this change.

MinderungMitigation

Apps mit der Zielplattform .NET Framework 4.6.2.NET Framework 4.6.2 oder höher können sich gegen diese Änderung entscheiden und Legacynormalisierung verwenden, indem dem Abschnitt <runtime> der Anwendungskonfigurationsdatei Folgendes hinzugefügt wird:Apps that target the .NET Framework 4.6.2.NET Framework 4.6.2 or later can opt out of this change and use legacy normalization by adding the following to the <runtime> section of the application configuration file:

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

Apps mit der Zielplattform .NET Framework 4.6.1.NET Framework 4.6.1 oder früher, die unter .NET Framework 4.6.2.NET Framework 4.6.2 oder höher ausgeführt werden, können die Änderungen an der Pfadnormalisierung verwenden, indem dem Abschnitt <runtime> der Anwendungskonfigurationsdatei die folgende Zeile hinzugefügt wird:Apps that target the .NET Framework 4.6.1.NET Framework 4.6.1 or earlier but are running on the .NET Framework 4.6.2.NET Framework 4.6.2 or later can enable the changes to path normalization by adding the following line to the <runtime> section of the application .configuration file:

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

Siehe auchSee Also

NeuausrichtungsänderungenRetargeting Changes