2009-07-29 17 views
31

Ich versuche, Flag zu setzen, die das Read Only Kontrollkästchen verursacht, wenn Sie right click \ Properties für eine Datei angezeigt werden.Der beste Weg, um eine Datei schreibbar in c machen #

Danke!

+0

Versuchen Sie, die Datei je nach Fragetitel nur lesbar, pro Frage oder schreibbar (nicht schreibgeschützt) zu machen? –

+0

Dies ist ein schwieriges Problem auf Win2k-basierten Betriebssystemen. Es gibt das schreibgeschützte Attribut, das Sie einer Datei geben können, und es gibt auch eine Schreibberechtigung, die über die Registerkarte "Berechtigungen" erteilt wird. Ersteres ist nur ein Vorschlag, wobei letzteres vom Betriebssystem tatsächlich durchgesetzt wird. – Armentage

+0

@Armentage Ich denke nicht, dass es so kompliziert ist. Es gibt eine klare Unterscheidung zwischen Dateiflags und NTFS-Berechtigungssätzen, und diese Frage beschäftigt sich eindeutig mit dem ersten Fall. –

Antwort

59

Zwei Möglichkeiten:

System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); 
fileInfo.IsReadOnly = true/false; 

oder

// Careful! This will clear other file flags e.g. FileAttributes.Hidden 
File.SetAttributes(filePath, FileAttributes.ReadOnly/FileAttributes.Normal); 

Die IsReadOnly-Eigenschaft auf Fileinfo tut im Wesentlichen die Bit-Flipping Sie manuell in der zweiten Methode zu tun haben würde.

+0

Erstaunlich, wie schnell Sie hier eine Antwort bekommen können. Ich liebe diese Seite! – JimDel

+0

Ich wusste nicht, dass Sie die erste Methode verwenden könnten. Genial! –

+0

So einfach, danke Jungs! – will

0

C#:

File.SetAttributes (filePath, FileAttributes.Normal);

File.SetAttributes (Dateipfad, Dateiattribute.ReadOnly);

33

Um gesetzt den Nur-Lese-Flag in der Tat macht die Datei nicht beschreibbar:

File.SetAttributes(filePath, 
    File.GetAttributes(filePath) | FileAttributes.ReadOnly); 

Um entfernen den Nur-Lese-Flag in der Tat die Datei beschreibbar zu machen:

File.SetAttributes(filePath, 
    File.GetAttributes(filePath) & ~FileAttributes.ReadOnly); 

Um Toggle der nur-Lese-Flag, so dass es das Gegenteil von dem, was es ist jetzt:

File.SetAttributes(filePath, 
    File.GetAttributes(filePath)^FileAttributes.ReadOnly); 

Dies ist im Grunde Bitmasken in Kraft. Sie legen ein bestimmtes Bit fest, um das schreibgeschützte Flag zu setzen, Sie löschen es, um das Flag zu entfernen.

Beachten Sie, dass der obige Code keine anderen Eigenschaften der Datei ändert. Mit anderen Worten, wenn die Datei ausgeblendet wurde, bevor Sie den obigen Code ausgeführt haben, bleibt sie auch danach verborgen. Wenn Sie einfach die Dateiattribute auf .Normal oder .ReadOnly setzen, können Sie am Ende andere Flags verlieren.

+0

imho dies ist die beste Methode. – Kevin

Verwandte Themen