使用TabLib的UnauthorizedAccessException - Windows 8 App

时间:2013-11-14 04:34:32

标签: c# windows-8 unauthorizedaccessexcepti taglib-sharp

我正在尝试向我们TagLib-Sharp读取mp4视频中的元数据但获取UnauthorizedAccessException。我正在使用FileOpenPicker并做了正确的声明。

有什么想法吗?提前谢谢。

错误: “类型'System.UnauthorizedAccessException'的例外情况发生在taglib-sharp.DLL中,但未在用户代码中处理

其他信息:拒绝访问路径'C:\ Users \ user \ Videos \ VideoName.mp4'。“

代码:

     private async void Button_Click(object sender, RoutedEventArgs e)
        {

      FileOpenPicker openPicker = new FileOpenPicker();
      openPicker.ViewMode = PickerViewMode.Thumbnail;
      openPicker.SuggestedStartLocation = PickerLocationId.VideosLibrary;
      openPicker.FileTypeFilter.Add(".mp4");
      StorageFile selection = await openPicker.PickSingleFileAsync();
      var selectionstring = selection.Path.ToString();

        if (selection != null) 
        {
            //TagLib.File file = TagLib.File.Create(selectionstring);  //<-Exception thrown here
            //TagLib.Tag Tag = file.GetTag(TagLib.TagTypes.Id3v2);
            //var frame = file.Tag.Comment.ToString();

            OutputTextBlock.Text = selectionstring;

            var stream = await selection.OpenAsync(Windows.Storage.FileAccessMode.Read);                
            videoWindow.SetSource(stream, selection.ContentType);
            videoWindow.Play(); //The video will play just fine so I know I have read access.
            } 
            else 
            { 
                OutputTextBlock.Text = "Operation cancelled."; 
            }       
   }

3 个答案:

答案 0 :(得分:0)

确保您具有对视频库的写入权限(打开资源管理器,右键单击存储视频的文件夹(而不是视频库图标!)并取消选择只读。

希望有所帮助。

答案 1 :(得分:0)

应用程序只能直接访问其安装和应用程序数据目录中的文件系统。它无权从音乐库中读取。

要访问其他地方的文件,您需要使用从文件选择器(或通过合同)返回的StorageFile对象。

此对象提供对文件的代理访问:代理具有用户的完全访问权限,可以读取用户有权阅读的任何文件。代理代表您的应用程序使用此访问权限,通过StorageFile对象提供包含文件内容的流。

希望这有帮助。

File access and permissions in Windows Store apps

答案 2 :(得分:0)

所以请使用:VideoProperties class

比taglib容易得多。