如何在Edge浏览器的原生主机中获取文件读取权限

How to get file read permission in Edge browser's native host

我正在尝试从 UWP 中实现的 Edge 浏览器的本机主机读取设置文件。此设置文件有一些 URL 列表以在扩展中处理它。但我无法读取本机主机中的文件。读取文件时出现以下异常。

System.UnauthorizedAccessException: 'Access to the path 'C:\Users\abc\Desktop\Settings.dat' is denied.'

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

有谁知道在 Edge 浏览器的本机主机中读取文件吗?请告诉我。

UWP 已提供 broadFileSystemAccess 功能,可以使用 Windows.Storage namespace 中的 API 访问更广泛的文件。您需要在访问之前添加受限的 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();
        }
    }

}

我已经使用以下代码解决了这个问题

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