WPF Desktop Bridge 进程外后台任务无法访问文档文件夹

WPF Desktop Bridge out-of-process background task cannot access Documents folder

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

我已经根据 Microsoft Developer Blog 上的文章在 WPF (Desktop Bridge) 应用程序中创建了进程外 BG 任务:Link

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

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

此外,我还添加了文件类型关联权限,用于我将在文档文件夹中创建和打开的文件类型,以及具有 General/System 事件任务类型的后台任务声明。

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

堆栈跟踪:

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

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

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

样本:Github

WPF Desktop Bridge out-of-process background task cannot access Documents folder

在测试期间,它可以在我的环境(os 版本 2004)的后台任务中成功创建 text.bgtxt 文件。该问题已在最新 OS 版本中修复。请尝试将您的 os 更新到最新版本。

The main problem is that not many users have migrated to version 2004 yet (my app has many users on 1809-1909).

添加图片库功能后尝试在图片库中创建文件夹,成功了。所以目前解决办法是用图片库代替文档库。