Der beste Weg, um eine Datei in c # schreibbar zu machen
Ich versuche mit flag, das bewirkt, dass die Read Only
Kontrollkästchen angezeigt wird, wenn Sie right click \ Properties
auf eine Datei.
Dank!
Kommentar zu dem Problem
Sie werden versuchen, die Datei nur zu Lesen, gemäß Ihrer Frage oder beschreibbar ist (nicht nur Lesen), pro Ihre Frage Titel?
Dies ist ein kompliziertes Problem auf Win2k basierte Betriebssysteme. Gibt es die nur-Lesen-Attribut können Sie eine Datei, und es gibt auch Schreib-Berechtigung, die erteilt über die "Berechtigungen" tab. Die erstere ist nur ein Vorschlag, wo letzteres tatsächlich vom Betriebssystem erzwungen.
@Armentage ich glaube nicht, dass es so kompliziert. Es gibt eine klare Unterscheidung zwischen Datei-flags und NTFS-Berechtigung setzt, und diese Frage beschäftigt sich mit dem ersten Fall.
InformationsquelleAutor der Frage will | 2009-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei Möglichkeiten:
oder
Die IsReadOnly-Eigenschaft auf FileInfo wird im wesentlichen die bit-flipping würden Sie manuell tun, in der zweiten Methode.
InformationsquelleAutor der Antwort Rex M
Zu set die read-only-flag, mit dem Ergebnis, dass die Datei nicht schreibbar:
Zu entfernen die read-only-flag, mit dem Ergebnis, dass die Datei beschreibbar ist:
Zu Umschalten die read-only-flag, so dass es das Gegenteil von dem, was es jetzt ist:
Dies ist im Grunde Bitmasken in Kraft. Sie setzen ein bestimmtes bit zu setzen, die nur-Lesen-flag ist, deaktivieren Sie es, entfernen Sie die Flagge.
Beachten Sie, dass der obige code wird sich nicht ändern, andere Eigenschaften der Datei. In anderen Worten, wenn die Datei versteckt war, bevor Sie ausgeführt obigen code, wird es verborgen bleiben, später ebenso. Wenn Sie legen Sie einfach die Datei-Attribute zu
.Normal
oder.ReadOnly
könnten Sie am Ende verlieren anderen Flaggen in den Prozess.InformationsquelleAutor der Antwort Lasse Vågsæther Karlsen
c# :
Datei.SetAttributes(filePath, FileAttributes.Normal);
Datei.SetAttributes(filePath, FileAttributes.ReadOnly);
InformationsquelleAutor der Antwort