我正在尝试为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))
如何解决此错误?
答案 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
文件夹。
希望这对您有所帮助。