2009-08-04 18 views
3

In der Anwendung, die ich schreibe, hat der Benutzer die Möglichkeit, einen Ordner hinzuzufügen, um rekursiv nach einigen Dateien zu suchen.UnauthorizedAccessException bei Verwendung von Directory.GetFiles

Das Problem ist, dass die Dateien, die er zur App hinzufügen möchte, im Basislaufwerk wie K: gespeichert werden können. Wenn er also dieses Laufwerk direkt hinzufügt, bekomme ich eine Ausnahme.

Oder wenn er fügt hinzu C: \, dann bekomme ich UnauthorizedAccessException, wo es heißt:

Zugriff auf den Pfad 'C: \ System Volume Information' verweigert wird.

Wie kann ich nur scannen wo ich scannen kann? Und geben Sie die Möglichkeit, ein anderes Nicht-System-Laufwerk vollständig zu scannen (alle Verzeichnisse)?

Antwort

5

Fangen Sie die Ausnahme ab, ignorieren Sie sie und fahren Sie mit dem nächsten Verzeichnis fort.

+0

vereinbart, wird dies höchstwahrscheinlich eine bessere Leistung als, bevor es die Verarbeitung jedes einzelnen Verzeichnisses Zugriffsberechtigungen zu überprüfen. – bernhof

+0

@Bernhof: Ich fühle mich genauso. Ich erwog die Alternative, Berechtigungen zu prüfen, aber das würde die Arbeit zweimal für gültige Verzeichnisse tun (einmal, um die Ordnerstruktur zu überprüfen und wieder zu analysieren), also entschied ich, dass es eine geringere Wahl war. –

+0

Danke, ich werde es auch mit Ausnahme versuchen, wenn ich ein Nicht-System-Basislaufwerk durchsucht habe. Das war eine andere Ausnahme. –

1

Warum funktioniert das dann nicht für mich? Ich versuche, die unauthorizedAccessException abzufangen, und stoppt das Programm immer noch.

+0

Wenn Sie versuchen, es mit einem Aufruf auszuführen (um in Unterverzeichnissen rekursiv zu scannen), wird die Funktion beendet, wenn die unauthorizedAccessException ausgelöst wird. Sie sollten also eine rekursive Funktion ausführen, die die Directorys/Unterverzeichnisse durchläuft und Aufrufe in Directory.GetFiles (Verkettung der Ergebnisse, die an eine Variable der höheren Ebene zurückgegeben werden) in einem Try/Catch umgeht, um das Problem zu vermeiden ... – VSP

Verwandte Themen