尝试访问文件时出现UnauthorizedAccessException

时间:2017-10-02 12:03:20

标签: c# uwp

C#/ VS的新手,尝试获取文件列表,觉得这个答案很简单,但却找不到。

基本上,想要获取文件列表,尝试了各种方法,但为简单起见,为什么

var f = Directory.GetFiles(@"C:\");

返回

  

System.UnauthorizedAccessException:'访问路径' C:\'是   。否认'

尝试将VS作为管理员运行,尝试使用子文件夹,尝试使用具有完全控制权限的Everyone的子文件夹。相同的结果。

2 个答案:

答案 0 :(得分:1)

要从您的UWP应用访问任意文件夹,用户首先需要通过FolderPicker对话框提供同意:

FolderPicker picker = new FolderPicker();
picker.SuggestedStartLocation = PickerLocationId.ComputerFolder;
picker.FileTypeFilter.Add("*");
StorageFolder folder = await picker.PickSingleFolderAsync();
var files = await folder.GetFilesAsync();

https://docs.microsoft.com/en-us/uwp/api/Windows.Storage.Pickers.FolderPicker

答案 1 :(得分:0)

  

System.UnauthorizedAccessException:'拒绝访问路径'C:\'。'

Rob已经表示,Windows应用商店应用运行sandboxed并且对blog中的文件系统的访问权限非常有限。只能通过broker process访问其他位置。此代理进程使用用户的完全权限运行。 因此,您可以使用完全权限FolderPicker访问Stefan Wick提到的文件夹。

默认情况下,应用可以访问某些文件系统位置。应用还可以通过声明功能来访问其他位置。

所有应用都可以访问某些位置。例如InstalledLocation LocalFolder

StorageFolder localFolder = ApplicationData.Current.LocalFolder;

除了默认位置,应用还可以通过在应用清单中声明功能来访问其他文件和文件夹。例如Pictures Music库。

<Capabilities><uap:Capability Name="musicLibrary"/></Capabilities>

<Capabilities><uap:Capability Name="picturesLibrary"/></Capabilities>

有关详情,请参阅File access permissionsSkip the path: stick to the StorageFile将帮助您深入了解uwp文件访问。