Я разрабатываю приложение WPF (Desktop Bridge), которое выполняет некоторую логику при запуске и в фоновой задаче вне процесса. Эта логика создает и использует файл в папке документов пользователя.
Я создал внепроцессную задачу BG в приложении WPF (Desktop Bridge) в соответствии со статьей в блоге разработчиков Microsoft: Ссылка
Чтобы использовать папку Documents, я добавил соответствующее разрешение в манифест проекта Package:
<Capabilities>
<uap:Capability Name="documentsLibrary" />
</Capabilities>
Кроме того, я добавил разрешение «Ассоциации типов файлов» для типа файла, который я собираюсь создать и открыть в папке «Документы», и объявления фоновой задачи с типом задачи «Общее / Системное событие».
Но, к сожалению, вызов метода 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
text.bgtxt
файл в фоновой задаче в моей среде (версия ОС 2004). Значит, проблема возникает только в старой версии системы, верно? - person Nico Zhu - MSFT   schedule 15.10.2020