访问KnownFolders.MediaServerDevices时如何解决AccessDenied错误?

时间:2019-07-11 16:18:20

标签: c# uwp

我正在尝试为PC / Xbox One制作一个简单的音乐播放器,该播放器使用DLNA作为媒体源,但是我一直遇到AccessDenied错误。

我已导入Windows.Storage,并且已在App Manifest中启用了音乐库功能。 尝试分配/访问KnownFolders.MediaServerDevices会引发AccessDenied错误。 从this文档开始,我只需要使用Music / Picture / Video库的任何依赖项来使用MediaServerDevices,但是启用功能的任何组合似乎都行不通。

public MainPage()
    {
        this.InitializeComponent();

        StorageFolder MediaServerDevices;
        MediaServerDevices = KnownFolders.MediaServerDevices;
    }

这应将StorageFolder分配给MediaServerDevices,而不是抛出:

System.UnauthorizedAccessException
  HResult=0x80070005
  Message=Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

MediaServiceDevice文件夹收集当前设备上指定类型的文件,而不仅仅是音乐库或其他多媒体文件夹。对于手机,它可以工作。但是对于PC,它涉及对其他文件夹的访问。因此,仅仅获得音乐库的权限是不够的。

如果希望它在PC上运行,则需要获得更大范围的文件权限。

使用代码打开Package.appxmanifest,添加名称空间和新的Capability

<Package
  ... 
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap mp rescap">

  <Capabilities>
    ...
    <uap:Capability Name="musicLibrary"/>
    <rescap:Capability Name="broadFileSystemAccess"/>
  </Capabilities>

</Package>

broadFileSystemAccess是访问MediaServiceDevice的密钥。

这是受限制的功能。可以在设置>应用程序中配置访问权限。找到您的应用程序,然后打开高级选项

打开File System

目前,您可以访问PC上的MediaServiceDevice文件夹。

希望这对您有所帮助。