Внепроцессная фоновая задача WPF Desktop Bridge не может получить доступ к папке документов

Я разрабатываю приложение 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


person Ilya Sivolovsky    schedule 15.10.2020    source источник
comment
Во время тестирования он смог успешно создать text.bgtxt файл в фоновой задаче в моей среде (версия ОС 2004). Значит, проблема возникает только в старой версии системы, верно?   -  person Nico Zhu - MSFT    schedule 15.10.2020
comment
@ NicoZhu-MSFT Верно, такое поведение воспроизводится в версиях Win старше 2004 года. В 2004 году все в порядке.   -  person Ilya Sivolovsky    schedule 15.10.2020
comment
Возможно, проблема решена в версии 2004, попробуйте обновить свою операционную систему до последней версии или используйте локальную папку приложения для замены documentsLibrary. А вы пробовали разместить все разрешения типа файла и DocumentsLibrary в BackgroundTaskWrapper Package.appxmanifest?   -  person Nico Zhu - MSFT    schedule 15.10.2020
comment
@ NicoZhu-MSFT. Основная проблема заключается в том, что еще не многие пользователи перешли на версию 2004 (у моего приложения много пользователей на 1809–1909). Также мне не подходит локальная папка, как и папка издателя, потому что мне нужна папка, которая будет доступна всем приложениям. Как я уже сказал, добавление этих двух разрешений в манифест проекта Wrapper не решает проблему.   -  person Ilya Sivolovsky    schedule 15.10.2020
comment
Я попытался сделать папку в библиотеке изображений после добавления возможности библиотеки изображений, и она работает, не могли бы вы использовать библиотеку изображений для замены?   -  person Nico Zhu - MSFT    schedule 15.10.2020


Ответы (1)


Внепроцессная фоновая задача WPF Desktop Bridge не может получить доступ к папке документов

Во время тестирования он смог успешно создать файл text.bgtxt в фоновой задаче в моей среде (версия ОС 2004). И проблема исправлена ​​в последней версии ОС. пожалуйста, попробуйте обновить вашу ОС до последней версии.

Основная проблема в том, что не многие пользователи перешли на версию 2004 (у моего приложения много пользователей на 1809–1909).

Я попытался сделать папку в библиотеке изображений после добавления возможности библиотеки изображений, и она работает. Итак, в настоящее время работа заключается в использовании библиотеки изображений для замены библиотеки документов.

person Nico Zhu - MSFT    schedule 15.10.2020