c# - GetFolderFromPathAsync 函数访问被拒绝

标签 c# uwp

我正在制作一个 Windows 10 通用应用程序,我希望用户选择一个文件夹来保存该应用程序的文档文件。此文件夹的路径保存到 ApplicationData.Current.RoamingSettings.Values。 这是代码:

第一次启动时:

var folderPicker = new FolderPicker { SuggestedStartLocation = PickerLocationId.ComputerFolder };
        StorageFolder folder = await folderPicker.PickSingleFolderAsync();
        StorageFolder homeFolder = await folder.CreateFolderAsync("App1 Data", CreationCollisionOption.OpenIfExists);

        var save = ApplicationData.Current.RoamingSettings.Values;
        save["HomeFolder"] = homeFolder.Path;

设置 HomeFolder 时:

string dir = save["HomeFolder"].ToString();
        try
        {
            StorageFolder homeFolder = await StorageFolder.GetFolderFromPathAsync(dir);
        }
        catch (Exception e)
        {
            Debug.WriteLine(e.ToString());
        }

第二个代码示例中抛出的异常是:

System.UnauthorizedAccessException:访问被拒绝(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

所以我的问题是,如何正确使用 GetFolderFromPathAsync 函数? 我检查了所有路径的字符串,它们都没有问题,甚至

StorageFolder.GetFolderFromPathAsync(storageFolder.Path);

没用。 你知道解决方案吗?

最佳答案

直接使用 StorageFile 而不是转换为路径。

要存储从文件选择器返回的文件供以后使用,请将 StorageFile 保存在 AccessCache 类 FutureAccessList 或 MostRecentlyUsedList 中。该路径不包括打开文件所需的权限。 StorageFile 携带权限并授予对文件的访问权限。

我在我的博客条目 Skip the path: stick to the StorageFile 中对此进行了更详细的讨论。

关于c# - GetFolderFromPathAsync 函数访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200332/

相关文章:

c# - 为什么 C# 中的命名空间允许循环依赖?

javascript - 使用 WinJS 实现 UWP 透明模糊效果

c# - UWP AutoSuggestBox QueryIcon 在添加样式后消失

c# - UWP - .NET Native 工具链编译错误

c# - 如何在按钮上单击弹出窗口,该按钮位于 uwp 中另一个弹出窗口中的位置

c# - 使用 .NET native 工具链编译导致 System.OutOfMemoryException

c# - 从Entity Framework 6中的集合中删除

c# - DataGridView 中的图像问题

c# - 将两个小数列表组合在一个数组中

c# - Blazor 将数据从父级传递给子级