Festlegen des Zeitstempels für schreibgeschützte Dateien auf Windows
Das Festlegen des Zeitstempels für eine Datei mit dem Nur-Lese-Attribut ist jetzt unter Windows erfolgreich und löst keine Ausnahme mehr aus.
Altes Verhalten
In Versionen vor dem .NET 6-Wartungsrelease hat das Festlegen des Zeitstempels für eine schreibgeschützte Datei unter Windows zu einer UnauthorizedAccessException geführt.
Neues Verhalten
Ab .NET 6.0.2 ist das Festlegen des Zeitstempels für eine schreibgeschützte Datei unter Windows erfolgreich.
Eingeführt in Version
.NET 6.0.2 (Wartungsrelease)
Typ des Breaking Changes
Diese Änderung kann sich auf die binäre Kompatibilität auswirken.
Grund für die Änderung
In ihrem Feedback haben Kunden berichtet, dass sie erwartet haben, erfolgreich einen Zeitstempel für eine schreibgeschützte Datei festlegen zu können. Durch diese Änderung ist das Verhalten unter Windows auch konsistent mit dem Verhalten unter Linux. Und nicht zuletzt war das Verhalten unbeabsichtigt, da es durch einen Fehler verursacht wurde.
Empfohlene Maßnahme
Es ist unwahrscheinlich, dass in vorhandenem Code erwartet wird, dass das Festlegen des Zeitstempels für eine schreibgeschützte Datei zu einem Fehler führt. Wenn dieses Verhalten jedoch in Ihrem Code erwartet wird, fügen Sie mithilfe von File.GetAttributes(String) eine Überprüfung zu Ihrem Nur-Lese-Attribut hinzu, bevor Sie versuchen, den Zeitstempel festzulegen.
Betroffene APIs
- System.IO.File.SetCreationTime(String, DateTime)
- System.IO.File.SetCreationTimeUtc(String, DateTime)
- System.IO.File.SetLastAccessTime(String, DateTime)
- System.IO.File.SetLastAccessTimeUtc(String, DateTime)
- System.IO.File.SetLastWriteTime(String, DateTime)
- System.IO.File.SetLastWriteTimeUtc(String, DateTime)