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

问题描述

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

根据Microsoft开发者博客上的文章Link

,我已经在WPF(桌面桥)应用程序中创建了进程外BG任务

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

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

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

但是,不幸的是,在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进程外后台任务无法访问Documents文件夹

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

主要问题是迁移到2004版的用户还不多(我的应用程序在1809-1909年有很多用户)。

添加图片库功能后,我试图在图片库中创建该文件夹,并且该文件夹可以工作。因此,目前的解决方法是使用图片库代替文档库。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...