我正在编写Windows 8.1商店应用程序,并尝试在ApplicationData.Current.RoamingFolder目录中创建一个子文件夹。目前没有存储数据。但是,以下行抛出System.UnauthorizedAccessException,说“访问被拒绝”。
var folder = await ApplicationData.Current.RoamingFolder.CreateFolderAsync("subfolder", CreationCollisionOption.OpenIfExists);
奇怪的是,如果我使用LocalFolder
而不是RoamingFolder
,则操作会成功。
var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("subfolder", CreationCollisionOption.OpenIfExists);
为什么我无法在漫游文件夹中创建子文件夹?我可以通过Windows资源管理器手动创建文件夹。
文档(link)表示文件夹中的内容存在限制,具体为:
“同步引擎限制了您必须遵循的文件名约定,以确保漫游文件夹中的项目可以漫游。请确保您的文件和文件夹名称不包含前导空格。同步引擎可能会限制总数可以漫游的设置和文件的大小。“
但是,我没有看到任何可以解释上述异常的内容。我错过了什么以及我对漫游文件夹有什么其他限制?
有趣的是,如果我创建一个全新的应用程序,两行代码都能完美运行。我不知道为什么会这样。
编辑:如Nate所述,CreateFolderAsync documentation说“如果您尝试在库或文件组等虚拟文件夹中创建子文件夹,则此方法可能会失败。”有谁知道这是否适用于此?如果是的话,它会引入什么限制?我在此问题上找到的唯一信息是this question,但它似乎没有坚定地解决问题。