【问题标题】:How to fix AccessDenied Error when accessing KnownFolders.MediaServerDevices?访问 KnownFolders.MediaServerDevices 时如何修复 AccessDenied 错误?
【发布时间】:2019-07-11 16:18:20
【问题描述】:

我正在尝试为使用 DLNA 作为媒体源的 PC/Xbox One 构建一个简单的音乐播放器,但我不断收到 AccessDenied 错误。

我已导入 Windows.Storage,并在 App Manifest 中启用了音乐库功能。 尝试分配/访问 KnownFolders.MediaServerDevices 会引发 AccessDenied 错误。 从this doc,我应该只需要任何音乐/图片/视频库依赖项即可使用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))

我该如何解决这个错误?

【问题讨论】:

    标签: c# uwp


    【解决方案1】:

    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 文件夹。

    希望对你有帮助。

    【讨论】:

    • 是的,这有效,谢谢!这也适用于 Xbox,还是需要其他许可?
    • 抱歉,由于缺少 XBOX 设备,我无法给出明确的答案。但我认为这是工作
    • @mantecademani 不幸的是,XBOX 永远不会支持广泛的文件系统访问。所以实际上我认为这不适用于 XBOX。
    猜你喜欢
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 2019-11-28
    • 2019-10-08
    • 2021-04-13
    • 2018-07-12
    • 1970-01-01
    • 2018-05-24
    相关资源
    最近更新 更多