Windows 8.1 Dateien auf Readonly setzen

In einer aktuellen Windows 8 Schulung zeigt mir ein Kursteilnehmer seine Lösung um einen Schreibschutz von einer Datei per WinRT zu entfernen. Habe ich noch nie gemacht. Der Code sieht jedenfalls kompliziert aus und so fange ich mal an mit VB.NET zu testen.

Zuerst eine Bild Datei auf readonly setzen.

Dazu muss man Wissen das die Attribute per Bitmaske gesetzt werden.

READONLY 0×1
HIDDEN 0×2
SYSTEM 0×4
DIRECTORY 0×10
ARCHIVE 0×20
DEVICE 0×40
NORMAL 0×80
TEMPORARY 0×100
SPARSE_FILE 0×200
REPARSE_POINT 0×400
COMPRESSED 0×800
OFFLINE 0×1000
NOT_CONTENT_INDEXED 0×2000
ENCRYPTED 0×4000

Die Attribute werden per Retrieve und Save gelesen und gesetzt. Per Text wird festgelegt welche Art von Metainformation gelesen werden soll. Davon gibts eine ganze Reihe.

   1:  Dim FILE_ATTRIBUTE_READONLY As UInt32 = 1
   2:  Dim SYSTEM_FILEATTRIBUTES = "System.FileAttributes"
   3:  Dim file = Await Windows.Storage.KnownFolders.PicturesLibrary.GetFileAsync("vespa.png")
   4:  Dim fileAtr = Await file.Properties.RetrievePropertiesAsync({SYSTEM_FILEATTRIBUTES})
   5:   
   6:  If fileAtr IsNot Nothing Then
   7:              Dim t = fileAtr.First.Value Or FILE_ATTRIBUTE_READONLY
   8:              fileAtr(SYSTEM_FILEATTRIBUTES) = t
   9:  End If
  10:   
  11:  Await file.Properties.SavePropertiesAsync(fileAtr)

Dem Schreibschutz entfernt man, indem man einfach die Attribute der Datei auf normal setzt.

   1:      fileAtr(SYSTEM_FILEATTRIBUTES) = 128
Kommentare sind geschlossen