Как получить разрешение на чтение файла в собственном хосте браузера Edge

Я пытаюсь прочитать файл настроек из собственного хоста браузера Edge, который реализован в UWP. Этот файл настроек имеет некоторый список URL-адресов для обработки в расширении. Но я не могу прочитать файл на родном хосте. Я получаю следующее исключение при чтении файла.

System.UnauthorizedAccessException: «Отказано в доступе к пути C:\Users\abc\Desktop\Settings.dat».

string fileName = "C:\\Users\\Sameer\\Desktop\\Settings.dat"; 
bool bfileExist = File.Exists(fileName); 
if (bfileExist) { byte[] fileData = File.ReadAllBytes(fileName); }

Кто-нибудь знает, как прочитать файл на собственном хосте браузера Edge? Пожалуйста, дай мне знать.


person sam    schedule 10.10.2019    source источник
comment
Итак, вы разрабатываете приложение UWP и хотите прочитать файл по пути «C:\Users\abc\Desktop\Settings.dat»?   -  person Xie Steven    schedule 10.10.2019
comment
Да, я разрабатываю приложение UWP и хочу прочитать файл из определенного места.   -  person sam    schedule 10.10.2019
comment
Вы добавили возможность broadFileSystemAccess для вашего uwp приложение?   -  person Nico Zhu - MSFT    schedule 10.10.2019
comment
Да, я попробовал функцию wideFileSystemAccess, но она дает ту же ошибку.   -  person sam    schedule 10.10.2019
comment
Как вы получаете файл в своем приложении uwp, не могли бы вы поделиться своим кодом?   -  person Nico Zhu - MSFT    schedule 10.10.2019
comment
И вы включили эту возможность на странице настроек ОС?   -  person Nico Zhu - MSFT    schedule 10.10.2019


Ответы (2)


UWP предоставила broadFileSystemAccess возможность доступа к более широкому файлу с помощью API в Windows.Storage namespace. Перед доступом необходимо добавить ограниченную возможность broadFileSystemAccess. И, пожалуйста, избегайте использования System.IO API. Для получения дополнительной информации см. следующий код.

var file= await Windows.Storage.StorageFile.GetFileFromPathAsync(fileName);
if (file!= null)
{
    byte[] result;
    using (Stream stream = await file.OpenStreamForReadAsync())
    {
        using (var memoryStream = new MemoryStream())
        {

            stream.CopyTo(memoryStream);
            result = memoryStream.ToArray();
        }
    }

}
person Nico Zhu - MSFT    schedule 10.10.2019

Я решил это, используя следующий код

string fileName = "C:\\Users\\Sameer\\Desktop\\Settings.dat";
Windows.Storage.StorageFile file = await Windows.Storage.StorageFile.GetFileFromPathAsync(fileName);

if(file != null)
{
  var bufferData = await Windows.Storage.FileIO.ReadBufferAsync(file);               
  Windows.Storage.Streams.DataReader dataReader = Windows.Storage.Streams.DataReader.FromBuffer(bufferData);
  byte[] fileData = new byte[bufferData.Length];
  dataReader.ReadBytes(fileData);
}
person sam    schedule 11.10.2019