Как получить разрешение на чтение файла на родном хосте браузера Edge - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь прочитать файл настроек с собственного хоста браузера 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? Пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 11 октября 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);
}
1 голос
/ 10 октября 2019

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();
        }
    }

}
...