c# - mscorlib.dll 中出现 'System.UnauthorizedAccessException' 类型的异常,但未在用户代码中处理

标签 c# xaml windows-store-apps

private async void lstPlayList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
     await new MessageDialog(lstPlayList.SelectedValue.ToString()).ShowAsync();
     StorageFile mediaFile = await StorageFile.GetFileFromPathAsync(Convert.ToString(lstPlayList.SelectedValue.ToString()));
     var mediaStream = await mediaFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
     PlayerME2.SetSource(mediaStream, mediaFile.FileType);
}

这段代码有什么问题?当列表框中的选择发生变化时,我正在尝试播放媒体文件。但是得到错误

mscorlib.dll 中发生了“System.UnauthorizedAccessException”类型的异常,但未在用户代码中处理

我也设置了管理员权限。

<requestedExecutionLevel level="requireAdministrator" uiAccess="true" />

我得到的错误是:

An exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll but was not handled in user code

WinRT 信息:无法访问指定的文件或文件夹 (占퀠0)。该项目不在应用程序有权访问的位置(包括应用程序数据文件夹、可通过功能访问的文件夹以及 StorageApplicationPermissions 列表中的持久项目)。确认该文件未标记有系统或隐藏文件属性。

附加信息:访问被拒绝。

如果有这个异常的处理程序,程序可以安全地继续。

还有什么我错过的吗?

最佳答案

Windows 应用商店应用在沙盒中运行,这就是为什么无法使用路径访问所有文件的原因(例如,使用 C:/test.txt 之类的路径) ). WinRT 安全模型会阻止您这样做。

您只能从允许的存储位置打开文件,例如 ApplicationData.Current.LocalFolderApplicationData.Current.RoamingFolder 或者当用户使用 file picker 主动选择文件时。

您还可以指定 capabilities 以便您可以访问例如图片或文档库。

如果您需要访问用户选择的“在沙盒之外”的文件,请使用 StorageApplicationPermissions.FutureAccessList 属性使该文件在应用重启后可访问。

关于c# - mscorlib.dll 中出现 'System.UnauthorizedAccessException' 类型的异常,但未在用户代码中处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22753843/

相关文章:

c# - 在 C# 中反序列化 XML 文件

c# - Json.NET 的 Pascal 大小写动态属性

c# - 为什么更新字符串 INotifyPropertyChanged 属性而不更新 List<string>?

c# - 在 metro 应用程序的 RichTextBlock 中加载 HTMl

c++ - 如何为 C++/WRL 初始化 IVectorView 实例?

c# - Node js 中的 RSACryptoServiceProvider

c# - CookieContainer 的 HttpWebRequest 操作超时

c# - 如何使用 XAML/C# 在我的 UWP 应用程序中允许双向数据绑定(bind)?

.net - 为 WPF 中的绑定(bind)公开子控件依赖属性

Windows 8 应用商店应用程序、Type.IsClass 和 System.ComponentModel.DesignerProperties.IsInDesignTool 缺失