UWP无法读写文件:HRESULT 0x80070199错误排查求助
UWP写入文件时出现“无法访问APPX文件,因为其未按预期加密(HRESULT: 0x80070199)”错误的解决思路
问题描述
执行UWP文件写入操作时触发以下异常:
抛出异常: System.Exception(位于System.Private.CoreLib.dll中)
System.Exception: 无法访问APPX文件,因为其未按预期加密(HRESULT: 0x80070199)
使用记事本打开创建的文件时也会出现相同错误提示,相关代码如下:
public static async void CreateDirectory(string name) { IReadOnlyList<IStorageItem> itemsList = await DirectoriesFolder.GetItemsAsync(); int newId = itemsList.Count + 1; StorageFolder newDir = await DirectoriesFolder.CreateFolderAsync(newId.ToString()); StorageFile cfgFile = await newDir.CreateFileAsync("DIRECTORYDATADONOTMODIFYORDELETETHISFILE.ddsf"); try { var buffer = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary("dupa", Windows.Security.Cryptography.BinaryStringEncoding.Utf8); //DirectoryConfigJson(newId, name) await FileIO.WriteBufferAsync(cfgFile, buffer); // this causes error } catch(Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } ObservableCollection<DirFile> dfList = new ObservableCollection<DirFile>(); }
解决思路及方案
检查目标目录权限
UWP应用的APPX安装目录(如Package.Current.InstalledLocation)是只读的,且受系统加密保护,无法写入数据。如果你的DirectoriesFolder指向该目录,就会触发此错误。需将目标目录改为应用可写入的区域,比如应用数据目录:// 替换为本地应用数据目录 StorageFolder DirectoriesFolder = ApplicationData.Current.LocalFolder;显式指定文件创建选项
创建文件时明确指定冲突处理策略,避免因文件已存在或权限问题引发异常:StorageFile cfgFile = await newDir.CreateFileAsync( "DIRECTORYDATADONOTMODIFYORDELETETHISFILE.ddsf", CreationCollisionOption.ReplaceExisting );修正异步方法签名
使用async void会导致异常处理不可控,建议改为async Task:public static async Task CreateDirectory(string name) { // 原有逻辑保持不变 }
内容的提问来源于stack exchange,提问作者Trzmi3l
相关产品推荐
相关产品推荐

