在UWP AppService中访问C Drive文件

时间:2016-10-05 11:41:44

标签: uwp

如何在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);
    }
}

2 个答案:

答案 0 :(得分:2)

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

这是一种方法(我甚至不称之为解决方案),只适用于一组非常狭窄的场景:如果......

  • 您知道所有文件都在特定文件夹下
  • 你可以拥有至少某种种(最小)UI

然后您可以执行以下操作:

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

答案 1 :(得分:2)

我很欣赏它已经很晚了,但是对于其他现在引用这篇文章的人来说,似乎微软已经添加了这个功能。

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

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

我还没有尝试过这个,但听起来你听起来很像。