如何在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);
}
}
答案 0 :(得分:2)
如果没有用户互动,您只能打开特定位置(请参阅https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions)。如@TheTanic所述,您只能使用用户交互(FileOpenPicker / FolderPicker)访问的其他位置。当然,对于“纯粹的”UWP AppService来说,这是一个问题。
这是一种方法(我甚至不称之为解决方案),只适用于一组非常狭窄的场景:如果......
然后您可以执行以下操作:
当然,实际上,每次启动应用程序时都会访问FutureAccessList,如果它不包含该文件夹,请询问用户。
答案 1 :(得分:2)
我很欣赏它已经很晚了,但是对于其他现在引用这篇文章的人来说,似乎微软已经添加了这个功能。
只需将'broadFileSystemAccess'功能添加到应用清单,如下所述: https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions
请注意,这仍然需要用户输入到某种程度(用户必须在首次运行应用程序时授予对文件系统访问权限),但不需要文件/文件夹选择器UI。
我还没有尝试过这个,但听起来你听起来很像。