1

我正在开发一个 WPF(桌面桥)应用程序,它在启动时和进程外后台任务中执行一些逻辑。此逻辑在用户的 Documents 文件夹中创建并使用一个文件。

根据 Microsoft 开发人员博客上的文章,我在 WPF(桌面桥)应用程序中创建了进程外 BG 任务:链接

为了使用 Documents 文件夹,我在 Package 项目的清单中添加了适当的权限:

<Capabilities>
    <uap:Capability Name="documentsLibrary" />
</Capabilities>

此外,我还为要在 Documents 文件夹中创建和打开的文件类型添加了文件类型关联权限,并使用常规/系统事件任务类型添加了后台任务声明。

但是很遗憾,KnownFolders.DocumentsLibrary.CreateFolderAsync("SubfolderName", CreationCollisionOption.OpenIfExists)BG任务中的方法调用导致异常:Access is denied..

堆栈跟踪:

at Windows.Storage.KnownFolders.get_DocumentsLibrary()
at *...

WPF应用程序代码中相同逻辑的调用成功。向 BackgroundTaskWrapper (UWP) 项目添加相同的权限并不能解决问题。

任务仅在 Windows 2004 上正常工作。它不适用于以前版本的 Windows:1909、1903、1809、1709(由于项目的目标版本,未在旧版本上测试)。

示例:Github

4

1 回答 1

0

WPF 桌面桥进程外后台任务无法访问 Documents 文件夹

在测试期间,它可以在我的环境(操作系统版本 2004)的后台任务中成功创建 text.bgtxt 文件。并且该问题已在最新的操作系统版本中得到解决。请尝试将您的操作系统更新到最新版本。

主要问题是尚未有多少用户迁移到 2004 版(我的应用程序在 1809-1909 上有很多用户)。

添加图片库功能后,我尝试在图片库中创建文件夹,并且可以正常工作。所以目前的解决方法是使用图片库来替换文档库。

于 2020-10-15T14:32:28.063 回答