Muss ich gehen durch die verschiedenen Verzeichnisse auf dem computer (über DirectoryInfo). Einige von Ihnen sind nicht zugänglich, und UnauthorizedAccessException Auftritt. Wie kann ich überprüfen, directory access, ohne die exception zu fangen?
InformationsquelleAutor SharpAffair | 2010-02-25
Müssen Sie die
Security
namespace.Sehen diese SO beantworten.
Sich aus den Antworten:
Update: (folgenden Kommentare)
FileIOPermission
befasst sich mit den Sicherheitsrichtlinien nicht Dateisystem-Berechtigungen, so müssen SieDirectoryInfo.GetAccessControl
.Aus msdn.microsoft.com/en-us/library/...:
Granting of permissions is determined by policy and is different from a demand subject to overrides, such as an assert. Also, IsGranted only tests the grant of the calling code assembly, independent of other callers on the stack.
Das ist nicht die richtige Antwort. FileIOPermission befasst sich mit CAS, nicht das Datei-system. In anderen Worten, ob die .NET-security-policy, die den Zugriff ermöglicht. Sie können CAS-Zugang kann Windows aber auch immer noch leugnen. DirectoryInfo.GetAccessControl() benötigt wird.
DirectoryInfo.GetAccessControl() kann eine exception werfen, wenn
no read permission rights
gewährt werden. Aber es gibt immer noch die richtige, um eine Liste der Ordner-Inhalte. In diesem Fall GetAccessControl() nicht helfen.Nur falls es jemanden interessiert, ich habe einen kleinen Schnipsel mit GetAccessControl hier
InformationsquelleAutor Oded
Einfach ausgedrückt, kann man nicht. Es gibt keine Möglichkeit zu überprüfen, ob ein Verzeichnis ist zugänglich, alles, was Sie feststellen können ist, dass es zugänglich war. Der Grund warum ist, sobald die Prüfung schließt die Berechtigungen können geändert und zum erlöschen Ihrer überprüfen. Die zuverlässigste Strategie, die Sie implementieren können, ist der Zugriff auf die Verzeichnisse und fangen die
UnauthorizedAccessException
.Schrieb ich einen blog-Artikel zu diesem Thema kürzlich die geht in ein bisschen ausführlich hier
InformationsquelleAutor JaredPar
könnten Sie machen einfach nur einen kleinen einfachen booleschen Funktion und ein Verzeichnis mit info-variable versuchen, um Verzeichnisse aus einem bestimmten Pfad. wenn es durch geht, kein problem, true zurück, wenn die exception-handle, false zurück, oder brechen Sie Ihre Ausnahme-Klausel, um sub-Ausnahmen und erhalte den Fehler-code.
InformationsquelleAutor JDMcK