Schreibschutz-Eigenschaft des Datenträgers überprüfen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Manu234211.

    Schreibschutz-Eigenschaft des Datenträgers überprüfen

    Hallo Community

    Weiss zufällig jemand, wie man den Schreibschutz eines Datenträgers abfragt (Visual Studio 2012 aufwärts)? Ich meine nicht die Schreibschutz-Dateiattribute, sondern z.B. den Schalter, den man bei SD Karten physisch verschieben kann, um alle sich darauf befindenden Daten zu schützen. Wie weiss man, ob so einen Datenträger schreibgeschützt ist? Wenn man den Schreibschutz so anwendet, haben die Dateien nicht automatisch die Schreibschutz-Attribute jedoch weiss Windows Explorer zum Beispiel, dass eine Datei nicht gelöscht werden kann (die Option zum Löschen erscheint nicht im Windows-Menü)

    Ich könnte einfach einen Schreibversuch starten und im Falle eines Fehlers diesen dann abfangen (wenn das die einzige Möglichkeit ist). In diesem Falle, weiss jemand welchen Fehlertyp das ist bzw. wie man herausfindet, dass es sich um den Fehler betreffend dem Schreibschutz handelt?

    Vielen Dank für eure Tipps :)
    Hallo

    Ich würde es auch so machen das ich erstmal versuche eine Versteckte Datei zu schreiben. Kann ich diese nicht schreiben ist mir im Grunde ja egal ob jetzt der ganze Datenträger schreibgeschützt ist oder ob ich darauf keine Schreibrechte habe. Ich kann nicht schreiben, das ist das was zählt denke ich.

    ​In diesem Falle, weis jemand welchen Fehlertyp das ist bzw. wie man herausfindet, dass es sich um den Fehler betreffend dem Schreibschutz handelt?

    Warum probierst du es nicht? Versuche eine Datei zu schreiben und fange den Fehler ab.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Auch wenn ich es für dirty halte, würde ich es wie @Nofear23m machen. Rechte im Dateiverzeichnis zu ermitteln ist nen riesen sch***. Daher am einfachsten innerhalb von nem try/catch Block versuchen ne Datei zu schreiben.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Manu234211 schrieb:

    Ich könnte einfach einen Schreibversuch starten und im Falle eines Fehlers diesen dann abfangen (wenn das die einzige Möglichkeit ist). In diesem Falle, weiss jemand welchen Fehlertyp das ist bzw. wie man herausfindet, dass es sich um den Fehler betreffend dem Schreibschutz handelt?



    So hätte ich es auch gemacht, ich habe mal die Theorie und ein Code dazu geschrieben, da ich mir nicht sicher bin ob es wirklich das ist was du meinst ^^
    Du versuchst in einem Try z.B. eine txt Datei auf der SD Karte zu speichern und gleich wieder zu löschen. Falls deine Karte gesperrt sein sollte müsstest du theoretisch eine Fehlermeldung bekommen, die du mit "Catch ex as Exception" abfangen kannst.
    Ich bin mir aber nicht ganz sicher ob du dein Programm mit Administrator Rechten öffnen musst.


    So könnte der Code in VB .NET aussehen:

    VB.NET-Quellcode

    1. Dim writable As Boolean
    2. Try
    3. 'txt datei erstellen
    4. 'txt datei löschen
    5. writable = True
    6. Catch ex As Exception
    7. 'fehler, datei konnte nicht erstellt werden
    8. writable = False
    9. End Try
    10. If writable = True Then
    11. MsgBox("Die Sicherheitssperre deiner SD Karte ist nicht aktiv.")
    12. End If
    13. If writable = False Then
    14. MsgBox("Die Sicherheitssperre deiner SD Karte ist aktiv.")
    15. End If

    ╔══╦═╦╦╦═╦══╦══╦╗╔╦═╦╦═╦══╗
    ║║║║╩╠..╣╦╬╗╚╬╗╔╣╚╝║╠║║║╠╗╚╣
    ╚╩╩╩╩╩╩╩═╩══╝╚╝╚══╩═╩╩═╩══╝

    MaxeStudios schrieb:

    Falls deine Karte gesperrt sein sollte müsstest du theoretisch eine Fehlermeldung bekommen, die du mit "Catch ex as Exception" abfangen kannst.
    Da würde ich auf jeden Fall den genauen Exceptiontyp abfangen.
    Ich tippe mal, dass die Schreibschutz-Information aus der InnerException einer IOException hervorgeht.

    Wenn du nämlich Schreibrecht hast und die Karte voll ist, fliegt er auch auf die Schnauze.
    Außerdem könnte es sein, dass du Schreib- aber keine Löschrechte hast, dann gibt's Dateileichen.

    Die saubere Methode läuft schon über den von @RodFromGermany vorgeschlagenen Weg.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()