Testen Sie die Ordnerumleitung "My Documents"

8

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?

    
hawbsl 08.02.2010, 07:56
quelle

3 Antworten

1

Sie könnten den Registrierungsschlüssel abfragen:

Ссылка

Sie können auch die Gruppenrichtlinie für die Umleitung abfragen:

Ссылка

Sobald Sie diesen Wert haben, können Sie einfach nach Netzwerk / zugeordnetem Laufwerk testen, so mache ich es.

    
James Campbell 08.02.2010 15:43
quelle
1

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!

    
Andras Zoltan 11.02.2010 23:53
quelle
0

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.

%Vor%     
Jaapjan 10.02.2010 13:34
quelle

Tags und Links