UWP StorageFile.OpenAsync Отказано в доступе Проблема - PullRequest
0 голосов
/ 22 сентября 2018

У меня проблема с тем, что я могу читать из файла в каталоге установки приложения, но не могу записать в него.

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

//Open file for reading
var SocStorageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///LastSoc.txt"));
var SocInputStream = await SocStorageFile.OpenReadAsync();
var SocClassicStream = SocInputStream.AsStreamForRead();
var SocStream = new StreamReader(SocClassicStream);

<do stuff with file read>
.....

SocInputStream.Dispose();
SocClassicStream.Dispose();
SocStream.Dispose();

//Open record file for writing
var RandomAccessStream = await 
SocStorageFile.OpenAsync(FileAccessMode.ReadWrite);

Когда я пытаюсь в последней строке включить доступ для записи, я получаю:

Система.UnauthorizedAccessException: «Доступ запрещен.(Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)) '

Обеспокоенный тем, что мои методы Dispose () не очистили его полностью, я попытался закомментировать все мои обращения к чтению.Та же ошибка.(Да, я знаю, я должен использовать «использование», но я не думаю, что здесь проблема)

Я не уверен, почему я не могу получить доступ для записи.Совет признателен спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

По пути, указанному в вашем коде, похоже, что вы пытаетесь записать файл, который является частью пакета вашего приложения.Этот файл существует в папке установки вашего приложения, к которой у вас есть только доступ только для чтения .

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

Посмотрите на этот документ от Microsoft, объясняющий доступ к файлам в UWP: https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions

Из документа, указанного выше,важная часть:

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

Теперь, если вы планируете обновить содержимое этого файла, вам следует переместить его в папку «Данные приложения» (ApplicationData.Current.LocalFolder),Приложениям UWP разрешено чтение и запись (и создание новых файлов) в этом каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...