2014-03-31 50 views
2
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'的異常,但未在用戶代碼中處理

型「System.UnauthorizedAccessException的」的異常出現在mscorlib.dll但在用戶代碼

我設置管理員privillage也沒有處理。

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

我得到的錯誤爲:

型 'System.UnauthorizedAccessException的' 的異常出現在mscorlib.dll但在用戶代碼

WinRT的信息沒有處理:無法訪問指定的文件或文件夾(佔0)。該項目不在應用程序有權訪問的位置(包括應用程序數據文件夾,可通過功能訪問的文件夾以及StorageApplicationPermissions列表中的持久項目)。驗證該文件未標有系統或隱藏的文件屬性。

附加信息:訪問被拒絕。

如果有這種異常的處理程序,程序可能會安全地繼續。

我錯過了什麼?

回答

0

試試這個:

,如果你想訪問根目錄

一下添加到應用程序清單,您應該運行在管理員模式下的項目:

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

Windows應用商店應用程序正在沙箱中運行,這就是爲什麼無法使用路徑訪問所有文件的原因(例如,通過使用類似C:/test.txt的路徑)。 WinRT安全模型阻止你這樣做。

只能從允許的存儲位置(如ApplicationData.Current.LocalFolderApplicationData.Current.RoamingFolder)或當用戶使用file picker主動選擇文件時打開文件。

您還可以指定capabilities,以便您可以訪問例如圖片或文檔庫。

如果您需要訪問用戶選擇的文件,並且該文件位於「沙盒外」,請使用StorageApplicationPermissions.FutureAccessList屬性在應用程序重新啓動後使文件可訪問。

相關問題