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個贊
接受的答案已不再完整?,F在可以broadFileSystemAccess
在app清單中聲明任意讀取文件系統。
“?文件訪問權限”頁面包含詳細信息。
請注意,用戶仍然可以通過設置應用撤消此權限。

楊魅力
TA貢獻1811條經驗 獲得超6個贊
這是一種受限制的能力。可在“設置”>“隱私”>“文件系統”中配置訪問。并啟用您的應用程序的訪問權限?由于用戶可以隨時在“設置”中授予或拒絕權限,因此應確保您的應用能夠適應這些更改。如果您發現您的應用程序無權訪問,您可以選擇通過提供指向Windows 10文件系統訪問和隱私文章的鏈接來提示用戶更改設置。請注意,用戶必須關閉應用,切換設置,然后重新啟動應用。如果他們在應用程序運行時切換設置,平臺將暫停您的應用程序,以便您可以保存狀態,然后強制終止應用程序以應用新設置。在2018年4月更新中,權限的默認值為“開”。在2018年10月更新中,默認為關閉。
- 3 回答
- 0 關注
- 772 瀏覽
添加回答
舉報
0/150
提交
取消