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

时间:2014-03-31 04:50:51

标签: 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'类型的异常,但未在用户代码中处理

我也设置了admin privillage。

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

我收到的错误是:

  

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

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

其他信息:访问被拒绝。

如果存在此异常的处理程序,则可以安全地继续该程序。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

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

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

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

如果您需要访问用户已选择的文件,而该文件位于沙盒外面,并且#34;使用StorageApplicationPermissions.FutureAccessList属性可在应用重启后访问该文件。

答案 1 :(得分:0)

试试这个:

如果要访问根目录,则应以管理员模式运行项目

将此添加到应用清单:

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