Windows 10通用应用程序文件/目录访问我正在开发一个从文件系统上的可配置位置读取jpeg和pdf文件的应用程序。目前有一个在WPF中实现的运行版本,现在我正在尝试迁移到新的Windows Universal应用程序。以下代码适用于WPF:public IList<string> GetFilesByNumber(string path, string number)
{
if (string.IsNullOrWhiteSpace(path))
throw new ArgumentNullException(nameof(path));
if (string.IsNullOrWhiteSpace(number))
throw new ArgumentNullException(nameof(number));
if (!Directory.Exists(path))
throw new DirectoryNotFoundException(path);
var files = Directory.GetFiles(path, "*" + number + "*",
SearchOption.AllDirectories);
if (files == null || files.Length == 0)
return null;
return files;
}使用通用应用程序我遇到了一些问题:Directory.Exists 不可用如何从应用程序存储区外的目录中读取?要从应用程序存储区外的其他目录中读取,我尝试了以下操作:StorageFolder folder = StorageFolder.GetFolderFromPathAsync("D:\\texts\\");var fileTypeFilter = new string[] { ".pdf", ".jpg" };QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, fileTypeFilter);queryOptions.UserSearchFilter = "142";StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);IReadOnlyList<StorageFile> files = queryResult.GetFilesAsync().GetResults();问题是:它不起作用,但我得到一个例外:TextManager.Universal.DataAccess.dll中出现“System.UnauthorizedAccessException”类型的异常但未在用户代码中处理附加信息:访问被拒绝。(HRESULT异常:0x80070005(E_ACCESSDENIED))我知道你必须在清单中配置一些权限,但我找不到适合文件系统IO操作的权限......有人也有这样的问题/可能的解决方案吗?解决方案: 从@Rico Suter给我的解决方案中,我选择了FutureAccessList和FolderPicker。重新启动程序后,也可以使用令牌访问该条目。我还可以向您推荐UX Guidlines和这个Github示例。非常感谢你!
3 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
接受的答案已不再完整。现在可以broadFileSystemAccess
在app清单中声明任意读取文件系统。
“ 文件访问权限”页面包含详细信息。
请注意,用户仍然可以通过设置应用撤消此权限。
杨魅力
TA贡献1811条经验 获得超6个赞
这是一种受限制的能力。可在“设置”>“隐私”>“文件系统”中配置访问。并启用您的应用程序的访问权限 由于用户可以随时在“设置”中授予或拒绝权限,因此应确保您的应用能够适应这些更改。如果您发现您的应用程序无权访问,您可以选择通过提供指向Windows 10文件系统访问和隐私文章的链接来提示用户更改设置。请注意,用户必须关闭应用,切换设置,然后重新启动应用。如果他们在应用程序运行时切换设置,平台将暂停您的应用程序,以便您可以保存状态,然后强制终止应用程序以应用新设置。在2018年4月更新中,权限的默认值为“开”。在2018年10月更新中,默认为关闭。
- 3 回答
- 0 关注
- 746 浏览
添加回答
举报
0/150
提交
取消