9
votes

Testez la redirection de «My Documents» Redirection

est-il possible de tester la redirection de dossier dans .NET? Je ne veux pas dire reparse points / jonctions, je veux dire quand un dossier (généralement mes documents) est redirigé vers un serveur.

Dans de tels cas, si vous parcourez le système de dossier d'un PC, vous rencontrez une erreur IO si vous atteignez la version locale du dossier. Il serait donc utile de pouvoir tester la redirection de mon dossier de documents, de manière à pouvoir agir (saupoudrer le dossier, sauter sur le serveur, etc.

Je sais que je peux obtenir l'emplacement de mes documents (mais uniquement pour l'utilisateur actuel) en utilisant Environnement.GetFolderDePath (Environnement.Specialfolder.mydocuments) Mais cela ne m'aide pas à le tester à l'avance (potentiellement) d'utilisateurs multiples.

Dois-je utiliser quelque chose comme ShgetknolDederDePath?


0 commentaires

3 Réponses :


1
votes

Vous pouvez interroger la clé de registre:

http://support.microsoft.com/kb/221837

Vous pouvez également interroger la stratégie de groupe pour la redirection:

http://technet.microsoft.com/ EN-US / Bibliothèque / CC781907 (WS.10) .aspx

Une fois que vous avez cette valeur, vous pouvez facilement tester pour le lecteur réseau / mappé, voici comment je le fais.


0 commentaires

0
votes

Je ne suis pas sûr de l'objectif que vous essayez d'atteindre, vous pouvez obtenir le répertoire n'importe où dans votre arbre auquel vous n'auriez peut-être pas la permission d'entrer dans ce que vous auriez pour que vous ne puissiez pas attraper des exceptions. Mais une façon de déterminer si vous traitez avec un lecteur réseau peut être d'utiliser driveinfo en combinaison avec la racine de la racine du dossier MyDocuments. xxx


1 commentaires

Je vais toujours attraper les exceptions, mais si possible, je veux prédire les exceptions prévisibles



1
votes

Il sera difficile d'obtenir une solution sans erreur de 100% à cela (autre que de saisir les exceptions sur l'accès - comme un autre répondeur a suggéré) - mais voici mon meilleur tir.

Créer un Dictionary Situé par autant d'emplacements communs de ces dossiers (par exemple, "C: \ utilisateurs [nom d'utilisateur] \ Mes documents", "Utilisateurs", " [Nom d'utilisateur] \ Mes documents ') ainsi que l'emplacement réel qu'ils sont réellement, à partir de l'environnement . Lorsque vous marchez la hiérarchie de répertoire, recherchez le répertoire dans ce dictionnaire pour voir si vous avez une entrée (si vous utilisez un dictionnaire - utilisez le comparateur stringcomparer.invariantcultureCase comparateur sur la construction pour éviter de devoir avoir à la muck le cas des chemins).

Je dois dire, cependant, vous pourriez simplement avoir à recourir à l'exception de l'IO à la fin; Parce que la structure de dossiers est entièrement personnelle - si j'avais une sauvegarde de mon utilisateur \ dossier sur le lecteur D: alors cette approche serait confuse!


0 commentaires