【问题标题】:Access C Drive files in UWP AppService在 UWP AppService 中访问 C 盘文件
【发布时间】:2017-02-13 20:13:50
【问题描述】:

UWP AppService中如何访问系统盘(C、D盘)文件。 示例:我想从 UWP AppServices 访问“C:\Test\sample.txt”文件。

我已经尝试了下面的代码。但抛出错误(附加信息:访问被拒绝。)。并且还在 appxmanifest 文件中添加了“可移动存储”功能。

StorageFolder testfolder = await StorageFolder.GetFolderFromPathAsync(@"c:\\test");
StorageFile sourcefile = await testfolder.GetFileAsync("sample.txt");
StorageFile destinationfile = await KnownFolders.SavedPictures.CreateFileAsync("Mysample.txt");
using (var sourcestream = (await sourcefile.OpenReadAsync()).GetInputStreamAt(0))
{
    using (var destinationstream = (await destinationfile.OpenAsync(FileAccessMode.ReadWrite)).GetOutputStreamAt(0))
    {
        await RandomAccessStream.CopyAndCloseAsync(sourcestream, destinationstream);
    }
}

【问题讨论】:

    标签: uwp


    【解决方案1】:

    感谢它迟到了,但对于现在参考这篇文章的其他人来说,微软现在似乎已经添加了该功能。

    只需将“broadFileSystemAccess”功能添加到应用清单中,如下所述: https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions

    请注意,这在某种程度上仍需要用户输入(用户必须在应用程序首次运行时授予文件系统访问权限),但不需要文件/文件夹选择器 UI。

    我还没有真正尝试过,但听起来你想要什么。

    【讨论】:

    • 我已经添加了,但是权限授予发生在哪里?
    【解决方案2】:

    没有用户交互,您只能打开特定位置(请参阅https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions)。正如@TheTanic 所提到的,您只能通过 用户交互(FileOpenPicker/FolderPicker)访问其他位置。当然,对于一个“纯”的 UWP AppService,这是一个问题。

    这里有一种方法(我什至不会称其为解决方案),它只适用于非常有限的场景:如果...

    • 您知道所有文件都位于特定文件夹下,并且
    • 您至少有某种种(最小)用户界面

    那么您可以执行以下操作:

    当然,实际上,您每次启动应用程序时都会访问 FutureAccessList,如果它不包含该文件夹,则询问用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 2019-03-25
      相关资源
      最近更新 更多