C# 如何在Windows应用商店应用程序启动时自动加载以前使用的文件

C# 如何在Windows应用商店应用程序启动时自动加载以前使用的文件,c#,.net,file-io,windows-store-apps,filepicker,C#,.net,File Io,Windows Store Apps,Filepicker,我在我的Windows应用商店应用程序开发中遇到了一个场景,表明这是不可能的。是否有人可以确认Windows应用商店应用程序中是否可以执行以下操作,以及如何以编程方式执行 用户点击“加载文件”按钮加载文档,显示标准Metro文件选择器,选择文档,然后将文件加载到应用程序中进行编辑。应用程序以某种方式保存此文件或其他资源的路径,以便在将来的应用程序启动时自动打开该文件 用户通过关闭然后打开应用程序来重新启动应用程序 启动时,应用程序加载最近打开的文档,并自动向用户提供该文档以供再次编辑(无需向用

我在我的Windows应用商店应用程序开发中遇到了一个场景,表明这是不可能的。是否有人可以确认Windows应用商店应用程序中是否可以执行以下操作,以及如何以编程方式执行

  • 用户点击
    “加载文件”
    按钮加载文档,显示标准Metro
    文件选择器
    ,选择文档,然后将文件加载到应用程序中进行编辑。应用程序以某种方式保存此文件或其他资源的路径,以便在将来的应用程序启动时自动打开该文件
  • 用户通过关闭然后打开应用程序来重新启动应用程序
  • 启动时,应用程序加载最近打开的文档,并自动向用户提供该文档以供再次编辑(无需向用户提供另一个文件选择器)。用户对文档进行更改,点击键盘上的
    Control+S
    ,更改将自动保存到文件中

我在当前的应用程序中尝试过这一点,但似乎从OneDrive自动加载文件路径不起作用(我得到了
System.UnauthorizedAccessException:访问被拒绝。
)。我在网上读到,包括文档功能(允许我访问我的OneDrive文件)将不允许我的应用程序获得批准,而且由于我需要批准,这对我来说是不可能的。

您不能为从路径访问重新配置任意文件。您需要保留对StorageFile的访问权限。要跨会话缓存会话,请使用Windows.Storage.AccessCache类,如StorageApplicationPermissions.FutureAccessList和MostRecentlyUsedList

这些将允许您保存选择器授予的权限,以便在应用程序重新启动时重用


我将在

中更详细地讨论这一点。您不能为从路径进行访问而重新构造任意路径。您需要保留对StorageFile的访问权限。要跨会话缓存会话,请使用Windows.Storage.AccessCache类,如StorageApplicationPermissions.FutureAccessList和MostRecentlyUsedList

这些将允许您保存选择器授予的权限,以便在应用程序重新启动时重用


我将在

中更详细地讨论这一点。您不能为从路径进行访问而重新构造任意路径。您需要保留对StorageFile的访问权限。要跨会话缓存会话,请使用Windows.Storage.AccessCache类,如StorageApplicationPermissions.FutureAccessList和MostRecentlyUsedList

这些将允许您保存选择器授予的权限,以便在应用程序重新启动时重用


我将在

中更详细地讨论这一点。您不能为从路径进行访问而重新构造任意路径。您需要保留对StorageFile的访问权限。要跨会话缓存会话,请使用Windows.Storage.AccessCache类,如StorageApplicationPermissions.FutureAccessList和MostRecentlyUsedList

这些将允许您保存选择器授予的权限,以便在应用程序重新启动时重用



我在

中更详细地讨论了这一点,您是否使用了
LiveConnectClient.GetAsync
?@Kulasangar-Nope,只是StorageFile.getfilefrompathsync(path);您是否使用了
LiveConnectClient.GetAsync
?@Kulasangar-Nope,仅使用StorageFile.getfilefrompathsync(path);您是否使用了
LiveConnectClient.GetAsync
?@Kulasangar-Nope,仅使用StorageFile.getfilefrompathsync(path);您是否使用了
LiveConnectClient.GetAsync
?@Kulasangar-Nope,仅使用StorageFile.getfilefrompathsync(path);Rob,为什么拾取的文件不能通过路径自动重复使用?如果我在应用程序重新启动时坚持使用该StorageFile,我是否能够自动保存到以前打开的StorageFile的相同路径,或者我必须展示FileSavePicker吗?我脑海中会出现很多问题,比如…如果你引用一个文件,但它不再存在,然后保存它,会发生什么?比如如果我在我的FutureAccessList中有一个StorageFile,我可以编辑和保存,但是原始的StorageFile已经变成了一个不同的OneDrive文档,用户直接复制并粘贴到原始文档上,会发生什么?它会覆盖文档吗?如果是这样,那就不好了,因为没有机制让我检查并查看文件自上次加载以来是否已更改。可能不允许文件通过路径,因为IStorageFile具有与其关联的安全访问令牌。他们可以检查你的应用程序是否有任何有效的路径访问令牌,但这可能需要相当多的额外工作,每次通过路径访问文件时都需要大量额外的处理(通常是这样),并且可能会带来潜在的安全向量。对于其他问题,为什么不试一试呢?我想知道,如果存储文件不存在,FutureAccessList是否会实际加载该存储文件。Rob,为什么不允许拾取的文件通过路径自动重用?如果我在应用程序重新启动时坚持使用该存储文件,我是否能够自动保存到以前打开的存储文件的相同路径,或者我必须展示FileSavePicker吗?我脑海中会出现很多问题,比如…如果你引用一个文件,但它不再存在,然后保存它,会发生什么?比如如果我在我的FutureAccessList中有一个StorageFile,我可以编辑和保存,但是原始的StorageFile已经变成了一个不同的OneDrive文档,用户直接复制并粘贴到原始文档上,会发生什么?它会覆盖文档吗?如果是这样,那就不好了,因为没有机制让我检查文件自上次加载以来是否发生了更改。文件可能不允许通过路径,因为IStorageFile具有安全性