访问CrossPlatform UWP中内部计算机驱动器的文件和文件夹



制作一个适用于所有系统的类库,并围绕存储(system.io(进行解析。到目前为止,它适用于Winforms和Wpf,但未能适用于UWP。我还有总共3个内部存储驱动器

C:/
D:/
E:/

我可以从C驱动器获取文件和文件夹,但不能从D或E驱动器获取。我已将其添加到UWP Package.appxmanifest 中

xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">`
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess"/>
<uap:Capability Name="musicLibrary"/>
<uap:Capability Name="removableStorage"/>
<uap:Capability Name="picturesLibrary"/>
<uap:Capability Name="videosLibrary"/>
<uap:Capability Name="documentsLibrary"/>
</Capabilities>`

但是<重新映射:能力名称=";broadFileSystemAccess"/>正在给我一个警告

严重性代码描述项目文件行禁止显示状态警告命名空间中的元素"Capabilities"'http://schemas.microsoft.com/appx/manifest/foundation/windows10'已命名空间中的子元素"Capability"无效'http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"。预期的可能元素列表:命名空间中的"CapabilityChoice"'http://schemas.microsoft.com/appx/manifest/foundation/windows10'作为以及命名空间中的"Capability"'http://schemas.microsoft.com/appx/manifest/uap/windows10'以及命名空间中的"Capability"'http://schemas.microsoft.com/appx/manifest/foundation/windows10'作为以及命名空间中的"Capability"'http://schemas.microsoft.com/appx/manifest/uap/windows10/4"作为命名空间中的"Capability"'http://schemas.microsoft.com/appx/manifest/uap/windows10/6"作为命名空间中的"Capability"'http://schemas.microsoft.com/appx/manifest/uap/windows10/7"作为命名空间中的"Capability"'http://schemas.microsoft.com/appx/manifest/uap/windows10/3"作为命名空间中的"Capability"'http://schemas.microsoft.com/appx/manifest/uap/windows10/2"作为命名空间中的"CustomCapabilityChoice"'http://schemas.microsoft.com/appx/manifest/foundation/windows10'作为以及命名空间中的"CustomCapability"'http://schemas.microsoft.com/appx/manifest/uap/windows10/4"像'开发。。。。

我认为这意味着broadFileSystemAccess不起作用。UWP应用程序已经显示在文件系统的系统设置中,我允许它,但仍然失败。

使用的文件路径示例是

@"D:GamesGenshin Impact/7z.dll"
@"D:GamesGenshin Impact7z.dll"
"D:\Games\Genshin Impact\7z.dll"

使用了这2个文件库

System.IO

文件&文件夹

Windows.Storage

StorageFile&存储文件夹

我曾尝试使用文件/文件夹选择器,但它偶尔会起作用,但我想尽量避免使用它们,因为这是一个.DLL,可以像System.IO.File/Folder和其他库一样使用。

如有任何帮助,我们将不胜感激。

编辑:我想明白了,我不得不删除其他与存储相关的功能。

<uap:Capability Name="musicLibrary"/>
<uap:Capability Name="removableStorage"/>
<uap:Capability Name="picturesLibrary"/>
<uap:Capability Name="videosLibrary"/>
<uap:Capability Name="documentsLibrary"/>

在那之后,我构建了它,停止了它,在系统设置中取消检查并重新检查了文件权限。

我想明白了,我不得不删除其他与存储相关的功能。

<uap:Capability Name="musicLibrary"/>
<uap:Capability Name="removableStorage"/>
<uap:Capability Name="picturesLibrary"/>
<uap:Capability Name="videosLibrary"/>
<uap:Capability Name="documentsLibrary"/>

在那之后,我构建了它,停止了它,在系统设置中取消检查并重新检查了文件权限。

你靠近隧道尽头的灯光。您需要使用Windows.Storageapi访问路径为的文件(启用应用程序的broadFileSystemAccess功能(。如果要访问路径为的文件,请调用Windows.Storage.StorageFile.GetFileFromPathAsync方法。根据您的场景,请使用DependencyService调用本机GetFileFromPathAsync方法,然后返回可以直接在表单中使用的文件数据。你可以参考这个案例的回复。

最新更新