拒绝访问应用程序';上的文件;s的第二次跑步

本文关键字:第二次 文件 应用程序 拒绝访问 | 更新日期: 2023-09-27 18:23:43

当我试图访问SD卡上的文件时,遇到了一个奇怪的问题,代码为:

var path = @"D:'Test'test.txt";
try
{
    StorageFile file = await StorageFile.GetFileFromPathAsync(path);
}
catch (Exception ex) { Debug.WriteLine($"File access failed due to {ex.Message}"); }
path = @"Test'test.txt";
StorageFile file2 = await (await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault().GetFileAsync(path);

文件在SD卡上,我已经声明了RemovableStorage功能,并添加了FileTypeAssociation。我可以在第一次调试应用程序时获得该文件,但在第二次运行时,我会使用第一个StorageFile获得UnauthorizedException。令人惊讶的是,第二次尝试通过RemovableStorage获取文件每次都有效。如果我只重新启动手机并再次调试应用程序,它会再次工作,但仍然只是第一次。

StorageFile.GetFileFromPathAsync()访问文件是否受到某种限制?我是不是错过了什么?


更新:

似乎在最新版本的模拟器10856上,我每次运行都会遇到异常,这可能意味着无法通过完整路径访问文件。

拒绝访问应用程序';上的文件;s的第二次跑步

选择器允许访问,因为用户提供的是文件,而不是路径。winstore应用程序不应该依赖于用户的驱动器/文件夹布局,这就是为什么你没有权限通过绝对路径访问文件的原因。在这种情况下,我们应该首先允许访问清单文件中的可移动设备,然后我们应该使用系统的RemovebleDevices文件夹来访问允许类型的文件。

同样奇怪的是,你第一次可以使用绝对路径。在我的测试设备中,如果使用绝对路径,我总是会收到UnauthorizedAccessException和"拒绝访问"错误。我的设备是10586.11。