C# 以编程方式使用FolderPicker

C# 以编程方式使用FolderPicker,c#,win-universal-app,windows-10-universal,file-access,filepicker,C#,Win Universal App,Windows 10 Universal,File Access,Filepicker,我正在制作一个Windows10UWP应用程序。作为此应用程序的一部分,我需要能够在用户设备的下载文件夹(而不是应用程序下载文件夹)内搜索。 我已经创建了一个文件夹选择器,用户可以自己选择下载文件夹。但是,我需要在没有用户的情况下执行此操作。 这是我的文件夹选择器: FolderPicker-picker=new FolderPicker(); picker.FileTypeFilter.Add(“*”); picker.ViewMode=PickerViewMode.List; picker.

我正在制作一个Windows10UWP应用程序。作为此应用程序的一部分,我需要能够在用户设备的下载文件夹(而不是应用程序下载文件夹)内搜索。 我已经创建了一个文件夹选择器,用户可以自己选择下载文件夹。但是,我需要在没有用户的情况下执行此操作。 这是我的文件夹选择器:

FolderPicker-picker=new FolderPicker();
picker.FileTypeFilter.Add(“*”);
picker.ViewMode=PickerViewMode.List;
picker.SuggestedStartLocation=PickerLocationId.Downloads;
StorageFolder folder=Wait picker.PickSingleFolderAsync();

有没有什么方法可以让我使用文件夹选择器之类的工具,但必须进行硬编码,以便目标始终设置为一个位置(下载文件夹)?

不允许搜索下载文件夹,但如果您只想重新访问以前下载的文件,则可以使用
FutureAccessList

using Windows.Storage.AccessCache;

file = await DownloadsFolder.CreateFileAsync(...);
var token = StorageApplicationPermissions.FutureAccessList.Add(file,
                                           "anything you like goes here");
您可能希望将令牌保存在应用程序的本地存储中,这样您就不会忘记它

使用
标记
在将来重新获得对文件的访问权

file = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);

您需要拥有该文件夹的权限,您可以通过编程方式使用KnownFolders,否则用户必须通过picker授予对您的应用程序的访问权限。我不确定你是否能通过官方API绕过这个问题。同意@Romasz,在DownloadsFolder中搜索文件的方法是不私有的。它有创建文件的方法。@JaydenGu是的,我遇到了限制。我计划让用户保存他们的手册下载,然后检查他们是否存在,以保存他们再次下载。我不想在我的应用程序沙箱中保存手册,因为他们也希望在应用程序外部查看手册。回到绘图板并找到另一种方法。谢谢你们的确认,非常感谢。@JamesTordoff只是为了添加-一旦用户通过选择器选择文件夹一次,您就可以通过编程方式访问它-无需再次使用选择器。@Romasz我不知道,我学到了一些新东西。不幸的是,无论如何我都不需要使用选择器。我相信你告诉我的在将来会有很好的用处,所以谢谢!您知道对文档等文件夹的限制是否与对下载文件夹的限制相同吗?