C# 在手动添加文件后尝试访问uwp publisher缓存时发生UnauthorizedAccessException

C# 在手动添加文件后尝试访问uwp publisher缓存时发生UnauthorizedAccessException,c#,uwp,C#,Uwp,我有一个使用publisher缓存文件夹的应用程序。我将一些文件复制到相应的目录C:\Users\\AppData\Local\Packages\\Folder中,现在我得到一个UnauthorizedAccessException试图查询这些文件 这是我在botton添加到appx清单的内容,就在之前: <Extensions> <Extension Category="windows.publisherCacheFolders"> <Publishe

我有一个使用publisher缓存文件夹的应用程序。我将一些文件复制到相应的目录
C:\Users\\AppData\Local\Packages\\Folder
中,现在我得到一个
UnauthorizedAccessException
试图查询这些文件

这是我在botton添加到appx清单的内容,就在
之前:

<Extensions>
  <Extension Category="windows.publisherCacheFolders">
    <PublisherCacheFolders>
      <Folder Name="Folder"/>
    </PublisherCacheFolders>
  </Extension>
</Extensions>
异常详细信息表明异常是从
GetFileAsync
引发的,因为它实际上是由内部等待程序引发的。我做错了什么?当我上周四写代码时,一切正常。今天,我想演示一下,得到了这个例外。appxmanifest中的声明不应该足够吗?或者我遗漏了什么


编辑:我刚刚注意到我也无法再写入publisher缓存文件夹。尝试创建一个新的空文件
shared.txt
,我也会得到相同的
UnauthorizedAccessException
。这可能是发布者证书的问题吗?我使用的是自签名测试证书,我也为用户和本地计算机手动安装了该证书。

最后,我成功地消除了错误消息。然而,这个解决方案并不好,如果有人有更好的,我会非常感激

  • 我创建了一个新的应用程序,它基本上像以前的桌面应用程序一样进行文件复制,但是在一个拥有相同发布者的uwp应用程序中。虽然这是相当痛苦的,因为您必须始终通过文件夹选择器向用户请求权限,但它确实有效
  • 我卸载了有问题的应用程序,以便Windows删除相应的发布者文件夹。将在explorer或任何其他桌面程序中创建的publisher cache文件夹留在系统中,应用程序将继续获得
    UnauthorizedAccessException
  • 我运行部署应用程序仅通过UWP API将文件复制到publisher文件夹。在本地部署期间,Windows将重新创建发布服务器缓存文件夹,以便应用程序能够访问该文件夹
  • 我运行了原始应用程序。在混合模式下调试时,我得到了一个
    AccessViolationError
    ,但这个错误没有传递给托管代码,所以一切都很好

  • 我猜这是一个完整性级别的问题(或其他基本ACL问题)。您使用资源管理器以中等IL复制了文件,但应用程序的IL较低。我相信命令行工具
    icacls
    可以告诉您这一点。基本上,应用程序文件夹不应该被普通用户使用。@PeterTorr MSFT实际上我写了一个小程序来复制文件,因为我太懒了,一直都不想这么做。但是,将完整性级别设置为较低也无法解决问题。调试发布者文件夹内容的预期方法是什么?@PeterTorr MSFT…为什么它以前可以工作?@PeterTorr MSFT因为我甚至没有写访问权限,我想这不是ACL的问题,但很遗憾,我的设置似乎有问题,但我无法解决。
    await ApplicationData.Current.GetPublisherCacheFolder("Folder").GetFileAsync(location)