GetFolderFromPathAsync函数访问被拒绝
我正在制作Windows 10 Universal App,我希望用户选择一个文件夹来保存App的文档文件。 此文件夹的路径将保存到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()); }
第二个代码示例中抛出的Exception是:
System.UnauthorizedAccessException: access denied (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
所以我的问题是,你如何正确使用GetFolderFromPathAsync函数? 我检查了所有字符串的路径,它们都没问题,甚至
StorageFolder.GetFolderFromPathAsync(storageFolder.Path);
不起作用。 你知道解决方案吗?
直接使用StorageFile而不是转换为路径。
要存储从文件选取器返回的文件以供以后使用,请将StorageFile保存在AccessCache类FutureAccessList或MostRecentlyUsedList中。 该路径不包括打开文件所需的执行次数。 StorageFile携带权限并授予对文件的访问权限。
我在博客文章中更详细地讨论了这个问题。 跳过路径:坚持使用StorageFile