UWP访问被拒绝。

8
基本上,我在使用我的UWP应用程序打开文本文件时遇到了巨大的困难。我已经将应用程序权限设置为可以访问“我的文档”等已知库的文件,但是尝试打开不在这些位置的文件时会遇到“拒绝访问”的错误。通过搜索互联网,我知道这是一个已知问题,并且已经被问过几次,但所有线程似乎都得出结论:由于沙箱,您只能通过文件选择器让用户访问它才能访问这些文件。请参见以下线程示例:https://social.msdn.microsoft.com/Forums/en-US/2ab6e209-cad7-4254-a252-b8e752ea7d13/uwp-how-can-i-access-locally-stored-files-not-on-removable-storage?forum=WindowsIoT
我知道再次提出同样的问题并希望得到不同的答案听起来徒劳无功,但我确信这不可能是全部答案。我之所以这么说是因为我从商店下载了其他记事本应用程序(例如modern notepad),它们允许这种行为而没有任何问题。他们是如何做到的???
这让我疯狂了几个月,我真的希望有人能帮忙。

答案仍然没有改变。 - Ken Tucker
你能告诉我你想要访问的位置吗?这个问题中的示例链接https://stackoverflow.com/questions/47453463/uwp-xaml-imagebrush-imagesource-from-networkshare/47454666#47454666可能对你有用。同时分享想要访问的位置和文件类型以及一些代码,这样我就可以帮助你了。 - Shubham Sahu
1
请参考我的答案 https://stackoverflow.com/questions/47344292/how-to-get-all-sub-folders-and-its-files-uwp/47344969#47344969。与Win32应用程序不同,UWP应用程序需要用户许可才能直接访问文件夹。 - Pratyay
Pratyay的回答是正确的。简而言之,您可以访问任何文件夹及其内容,但用户必须首先使用选择器显式地打开它。完成后,令牌可以存储在FutureAccessList中。 - Sean O'Neil
可能是Windows 10通用应用程序文件/目录访问的重复问题。 - Geoff James
显示剩余2条评论
3个回答

5

5个月后...

微软现在已经添加了这个功能。只需按照此处描述的方式将“broadFileSystemAccess”能力添加到应用程序清单中即可:

https://learn.microsoft.com/en-us/windows/uwp/files/file-access-permissions

请注意,这仍然需要用户在某种程度上进行输入(用户必须在首次运行应用程序时授予对文件系统的访问权限),但不需要使用文件/文件夹选择器 UI。

我还没有实际尝试过这个方法,但听起来应该可以解决问题。我希望它能帮助未来参考本帖子的人们。


2
我已经尝试过了,但它并没有起作用!我还进入了“选择哪些应用程序可以访问您的文件系统”,并将我的应用程序设置为“是”,但它仍然不起作用。这个设置是做什么用的?难怪微软应用商店如此失败。 - Paul McCarthy

1
首先,你需要在你的Package.XML中添加broadFileSystemAccess。

https://learn.microsoft.com/en-us/windows/uwp/files/file-access-permissions

<Package
  ...
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
    <rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>

然后您的应用程序将在隐私>文件系统下显示访问设置。该设置默认情况下未启用,必须在开发期间启用。

enter image description here


0

是的,就像你已经知道的那样,普通的UWP应用程序不能直接访问一些不被允许的路径。你需要一个代理来帮助你使用FilePicker来访问它。我相信你可以找到很多关于此问题的文章。

那么为什么你可以在商店中看到一些看起来不同的记事本呢?这是因为这些应用程序是使用DesktopBridge技术转换的应用程序。DesktopBridge允许普通的桌面应用程序在UWP应用容器中运行,并拥有更多的特权。尽管它对路径有一些问题需要注意,就像下面的博客所提到的:blog1blog2


非常感谢。这就是我寻找的原因。对我来说看起来很奇怪并且真的很令人沮丧,但我想这没有其他办法。谢谢您的回答。 - arneyjfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接