【问题标题】:Resolving 'Environment.SpecialFolder.Personal' when Folder Redirection is active当文件夹重定向处于活动状态时解析“Environment.SpecialFolder.Personal”
【发布时间】:2010-09-22 02:45:33
【问题描述】:

默认情况下,我们的 Windows 窗体应用程序将数据文件保存在用户的“我的文档”文件夹(在 XP 上)或“文档”文件夹(在 Vista 上)。我们通过调用来查找这个位置:

Environment.GetFolderPath( Environment.SpecialFolder.Personal )

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

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

我没有环境来测试这一点,而且我无法找到任何明确的确认方式。

【问题讨论】:

    标签: .net winforms windows-xp


    【解决方案1】:

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

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

    【讨论】:

    • 我知道更改“我的文档”文件夹的目标将更新此注册表项(因此,Environment.SpecialFolder 调用将正常工作)。但是文件夹重定向的工作方式是否相同?
    【解决方案2】:

    我有一个用户在我的文档被重定向到网络(它转到驱动器 O)的 XP 机器上调用 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 时报告了以下错误:

    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: 而不是 O:\)。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        • 2014-06-01
        • 2013-09-12
        • 2023-02-24
        • 1970-01-01
        相关资源
        最近更新 更多