Может ли приложение UWP изменять файлы в папке AppData другого приложения при использовании broadFileSystemAccess и runFullTrust? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложение C # для Windows Form, которое делает (примерно) что-то вроде:

  1. OpenFileDialog () <- указывает путь к файлу </li>
  2. File.Exists () <- подтверждает правильность пути к файлу </li>
  3. File.GetLastWriteTime () <- проверяет время последнего изменения файла </li>
  4. ZipArchive.CreateEntryFromFile () <- создает новый zip, если файл изменился </li>

Я пытаюсь заставить приложение работать как приложение UWP.Я успешно получил его скомпилированный в APPX, и он отлично устанавливает / запускает.Однако, похоже, что вся файловая активность, которую он обрабатывает, застряла в кэшированной / песочнице версии файловой системы или чего-то еще.

Например:

  • Я выбираю C: \ Temp \ hello.txt в приложении (шаг №1 выше)
  • Затем я изменяю текстовый файлэто в блокноте, сохранить и выйти
  • Затем я запускаю мое приложение для выполнения шагов # 3 и # 4
  • Однако шаг № 3 утверждает, что файл не изменился. Это то, что заставляет меня думать, что приложение UWP просматривает кэшированный или набор из песочницы моей файловой системы?Или здесь происходит что-то еще странное?
  • Кроме того, если я попытаюсь заставить приложение сделать zip-файл независимо от даты последнего изменения, при проверке папки zip-файл фактически не создается - снова этозаставляет меня задуматься, не застряло ли приложение в какой-то песочнице / кеше моей файловой системы, а не в самой файловой системе?
  • (новинка). Еще одна интересная подсказка заключается в том, что если я открою окно проводника Windows в C: \ TempЯ вижу мой файл hello.txt сам по себе.Если я открою openFileDialog () в приложении UWP для C: \ Temp, я увижу мой файл hello.txt и созданный им файл hello.zip.Так что оба окна используют C: \ Temp, но они показывают разные файлы !?

Другие примечания:

  • Приложение UWP создается с помощью моста на рабочем столе (makeappx.exe)
  • Мой AppManifest.xml имеет соответствующий broadFileSystemAccess иОбъявлены возможности runFullTrust.
  • Я установил приложение для разрешения доступа к файловой системе в диалоговом окне «Параметры конфиденциальности файловой системы» в Windows 10.
  • Приложение отлично работает при работе в качестве класса *.exe (не UWP / Appx)

1 Ответ

1 голос
/ 05 апреля 2019

Мост рабочего стола захватывает и перенаправляет записи файлов в папки, которые являются частью пакета. Вы можете прочитать больше об этом в официальных документах . Цель состоит в том, чтобы позволить операционной системе очищать эти файлы при удалении приложения.

Вы должны иметь возможность записи в папку, которая не является частью пакета, если пользователь имеет доступ к этой папке, и тогда вы сможете увидеть файл в этой фактической папке в проводнике.

...