Ist es möglich, die Ordnerumleitung in .net zu testen? Ich meine nicht Reparse Points / Junctions, ich meine wenn ein Ordner (normalerweise My Documents) auf einen Server umgeleitet wird.
Wenn Sie in einem solchen Fall das Ordnersystem eines PCs durchlaufen, tritt ein IO-Fehler auf, wenn Sie die lokale Version des Ordners erreichen. Daher wäre es nützlich, die Ordnerumleitung für Eigene Dateien testen zu können, um Aktionen ausführen zu können (den Ordner überspringen, auf den Server springen usw.).
Ich weiß, dass ich den Speicherort von Eigene Dateien (aber nur für den aktuellen Benutzer) mit verwenden kann
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
, aber das hilft mir nicht im Voraus über (möglicherweise) mehrere Benutzer zu testen.
Muss ich etwas wie SHGetKnownFolderPath verwenden?
Es wird schwierig sein, eine 100% fehlerfreie Lösung zu bekommen (außer die Exceptions beim Zugriff zu fangen - wie ein anderer Beantworter vorgeschlagen hat) - aber hier ist meine beste Chance.
Erstellen Sie ein Dictionary<string, string>
mit so vielen gemeinsamen Speicherorten für diese Ordner wie möglich (zB 'c: \ Benutzer [Benutzername] \ Eigene Dateien', 'd: \ Benutzer [Benutzername] \ Eigene Dateien') mit der tatsächlichen Position, die sie tatsächlich sind, aus dem Environment
.
Während Sie die Verzeichnishierarchie durchgehen, suchen Sie in diesem Verzeichnis nach dem Verzeichnis, um zu sehen, ob Sie einen Eintrag haben (wenn Sie ein Dictionary verwenden - verwenden Sie den StringComparer.InvariantCultureIgnoreCase
Comparer für die Konstruktion, um nicht mit der Groß- / Kleinschreibung der Pfade herumzuärgern).
Ich muss allerdings sagen, dass Sie am Ende vielleicht nur noch die IO-Exception abfangen müssen; Da die Ordnerstruktur völlig persönlich ist - wenn ich eine Sicherungskopie meines Ordners "Users \" auf Laufwerk D: hätte, würde dieser Ansatz durcheinander geraten!
Ich bin mir nicht sicher, welches Ziel Sie erreichen möchten. Sie können Verzeichnisse überall in Ihrem Baum abrufen, zu denen Sie möglicherweise keine Zugriffsrechte haben, so dass Sie trotzdem Ausnahmen abfangen müssen. Eine Möglichkeit, um festzustellen, ob Sie mit einem Netzlaufwerk arbeiten, ist die Verwendung von DriveInfo
in Verbindung mit der Abfrage des Stammverzeichnisses des Ordners mydocuments.
Tags und Links .net windows special-folders