当文件夹重定向处于活动状态时解决'Environment.SpecialFolder.Personal'

问题描述:

我们的Windows Forms应用程序默认将数据文件保存在用户的'我的文档'文件夹(XP)或'文档'文件夹(Vista)上。我们通过以下方式查找此位置:当文件夹重定向处于活动状态时解决'Environment.SpecialFolder.Personal'

Environment.GetFolderPath(Environment.SpecialFolder.Personal) 

我们知道这对于个人文件夹位于本地磁盘上的用户非常有用。我们不确定的是哪些域用户的文件夹重定向适用于他们的个人资料/个人数据文件夹。

我的问题是:无论文件夹重定向是否处于活动状态,上述调用是否正确解决?

我没有环境来测试这个,我一直无法找到任何确定的方式或其他方式。

是的。您可以通过更新文件夹的相应注册表项来自己测试。看看下......

HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\ Shell文件夹

+0

我知道,更改“我的文档”文件夹的目标将更新此注册表项(因此Environment.SpecialFolder调用将正常工作)。 但文件夹重定向的工作方式相同吗? – CBono 2008-11-13 03:19:07

我会期待它。 Environment.GetFolderPath和底层SHGetSpecialFolderPath文档没有给出任何迹象表明它不能正确解析,也不能找到任何你会使用它的地方。

我知道它已经有一段时间,但我想在这里报告,我已经有用户报告在XP的机器,其My Documents文件重定向到网络上的Environment.GetFolderPath(Environment.SpecialFolder.Personal)调用下面的错误(它去推动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) 

我没有直接访问到这台机器配置,但从谷歌搜索和用户的帮助,我相信重定向是缺乏尾随\(例如。O:而不是f O:\)。

所以我相信答案将是不,它不会正确解决每次