2008-11-13 8 views
4

Notre application Windows Forms enregistre par défaut les fichiers de données dans le dossier «Mes documents» (sous XP) ou dans le dossier «Documents» de l'utilisateur (sous Vista). Nous admirons cet endroit en appelant:Résolution de 'Environment.SpecialFolder.Personal' lorsque la redirection de dossiers est active

Environment.GetFolderPath(Environment.SpecialFolder.Personal) 

Nous savons que cela fonctionne très bien pour les utilisateurs dont le dossier personnel est sur un disque local. Ce dont nous ne sommes pas sûr, ce sont les utilisateurs du domaine qui ont la redirection de dossier en vigueur pour leurs dossiers de profil/données personnelles.

Ma question est: L'appel ci-dessus résout-il correctement que la redirection de dossiers soit active ou non?

Je n'ai pas l'environnement pour tester cela, et je n'ai pas été en mesure de trouver une confirmation définitive dans un sens ou dans l'autre.

Répondre

1

Oui, c'est le cas. Vous pouvez le tester vous-même en mettant à jour l'entrée de registre correspondante pour le dossier. Regardez sous ...

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders

+0

Je sais que la modification de la cible du dossier 'Mes documents' mettra à jour cette clé de registre (et, par conséquent, l'appel de Environment.SpecialFolder 'fonctionnera correctement). Mais la redirection de dossiers fonctionne-t-elle de la même manière? – CBono

+0

Oui. Il met essentiellement à jour cette valeur. – JaredPar

1

Je m'attendrais à ce qu'il le fasse. La documentation à la fois pour Environment.GetFolderPath et le SHGetSpecialFolderPath sous-jacent ne donne aucune indication qu'il ne résoudrait pas correctement ni je peux trouver quelque chose que vous emploieriez sa place.

1

Je sais que ça fait un certain temps, mais je voudrais signaler ici que j'ai eu un rapport d'utilisateur l'erreur suivante sur un appel Environment.GetFolderPath (Environment.SpecialFolder.Personal) sur une machine XP dont Mes documents est redirigé vers le réseau (il va conduire O):

System.ArgumentException: Absolute path information is required. 
    at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath) 
    at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList) 
    at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String path) 
    at System.Environment.GetFolderPath(SpecialFolder folder, SpecialFolderOption option) 
    at System.Environment.GetFolderPath(SpecialFolder folder) 

Je n'ai pas eu accès direct à cette configuration de machine encore, mais de google recherches et de l'aide de l'utilisateur, je crois que la redirection manque un trailing \ (par exemple O: au lieu de f O: \).

Donc, je crois que la réponse serait non, il ne résout pas correctement à chaque fois.

Questions connexes