Leider geht er immer in den else-Zweig.
Wenn ich nun in dem Dir eine Datei anlegen will, bekomme ich eine UnauthorizedAccessException (Der Zugriff auf meinPfad wurde verweigert)
ich hätte vorgeschlagen, dass Du versuchst die Datei anzulegen, und mit Try-Catch Fehler abfängst. Unter anderem kannst Du ja die "UnauthorizedAccessException" separat abfangen, und anders reagieren.
Gruß
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
ich denke auch das der Code korrekt ist. Deshalb solltest du prüfen, ob das Verzeichnis tatsächlich auf Readonly gesetzt ist. Die UnauthorizedAccessException kann man ja auch aus anderen Gründen bekommen.
Danke für die Antworten.
Es ist wirklich etwas unschön es über die try-catch methode zu versuchen.
Ich gebe den User die Möglichkeit ein Default-Dir für seine Dateien anzugeben.
Wenn der User ein Verzeichnis gewählt hat, soll die Überprüfung auf readonly erfolgen.
Da muss ich also versuchen eine Datei anzulegen und diese dann gleich wieder löschen. Hmm.
Gibt's den keine bessere Lösung.
@herbivore
Ich habe für mein TestDir im sowohl im Win-Explorer->Eigenschaften das Häckchen "Schreibgeschützt" gesetzt und in den Sicherheitseinstellungen z.B. Schreiben und Dateien anlegen verweigert, Lesen und Ausführen sowie Ordnerinhalt auflisten erlaubt.
In dem Testdir kann ich wirklich keine Dateien schreiben.
dass du in das Verzeichnis nicht schreiben kannst, habe ich dir sofort geglaubt, sonst würdest du ja keine UnauthorizedAccessException bekommen. Mich wundert bloß, warum du das ReadOnly nicht auslegesen bekommst. Vielleicht hast du die Berechtigung, Attribute auszulesen, entfernt (wenn es das als separate Berechtigung überhaupt gibt). Aber im Prinzip zeigst du ja selbst, dass es mehr Wege gibt, das Schreiben zu verhinden. Es würde also nicht alleine reichen, auf ReadOnly abzufragen. Die UnauthorizedAccessException müsstest du dann so oder so noch fangen. Da hilft kein Jammern.
So etwas sollte eigentlich jedes mal überprüft werden, wenn in das Directory geschrieben wird, die Berechtigungen können sich ja auch ändern. Dann erübrigt sich ggf. die erste Prüfung.
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Das eigentliche erstellen der Datei mache ich natürlich im try-catch-Block.
Meine "Problem" liegt dort, wo ich dem Nutzer anbiete ein Default-Dir zu wählen (bei den Settings). An der Stelle möchte ich ja eigentlich keine Datei erstellen, sondern nur prüfen, ob es in dieses Dir priniziell möglich ist, Dateien zu erstellen.
Aber ich sehe schon, dass ich um den Anlegen-Löschen-Versuch nicht umhin komme
eine solche Prüfung wäre ohnehin nur von begrenztem Nutzen. Wenn erst später geschrieben wird, kann sich die Schreibbarkeit (in beiden Richtungen!) ja schon geändert haben. Ich würde die Prüfung an deiner Stelle ganz weglassen.
unter WinXP Pro steht Dir die Wahl die erweiterte Sicherheitseinstellung zu verwenden. Standardmäßig ist es aber auf die Standardeinstellung beschränkt :-)
In der erweiterten Einstellung (zu finden wie folgt:
Rechts-Klick auf Ordner -> Sicherheit -> Erweitert den entsprechenden Benutzer anklicken, dann gibt es die Einstellung, dass man dem entsprechenden Benutzer erlaubt die Attribute in dem entsprechenden Ordner auszulesen. Damit solltest Du die Einstellungen setzen können, und Dein Programm kann das dann auch...
Gruß
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”