You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10下Xamarin.Forms+VS2017读取文件遇权限拒绝问题求助

解决Xamarin.Forms在Win10读取MyDocuments文件权限被拒的问题

嘿,我来帮你搞定这个权限坑!你遇到的这个错误其实是Xamarin.Forms在Windows平台(尤其是UWP项目)的权限逻辑和传统桌面应用不一样导致的——哪怕你用管理员身份跑VS、改了清单也没用,得按Windows现代应用的规则来处理。

下面分情况给你针对性的解决方案:

如果你用的是UWP项目(Xamarin.Forms最常见的Windows目标)

UWP应用有自己的沙箱权限机制,不是靠管理员权限就能绕过去的,得正确声明能力并使用对应的API:

  • 第一步:配置Package.appxmanifest的权限

    1. 打开你的Windows UWP项目里的Package.appxmanifest文件
    2. 切换到「功能」标签页,勾选文档库选项
    3. 再切换到「声明」标签页,点击「添加」,选择文件类型关联,然后配置:
      • 显示名称:随便填,比如「XML文件」
      • 文件类型:.xml(注意前面的点)
      • 其他属性保持默认即可
  • 第二步:改用UWP原生文件API读取
    原来的System.IO类在UWP沙箱里访问文档库会有严格限制,建议换成Windows.Storage的API,代码示例如下:

    using Windows.Storage;
    
    // 要在异步方法内调用哦
    var documentsFolder = KnownFolders.DocumentsLibrary;
    var pippoFile = await documentsFolder.GetFileAsync("pippo.xml");
    var fileContent = await FileIO.ReadTextAsync(pippoFile);
    

    这样就能符合UWP的权限要求,顺利读取文件内容了。

如果你用的是WPF项目

如果你的Windows目标是WPF,问题大概率出在文件本身的权限或占用状态:

  • 右键pippo.xml文件,选择「属性」→「安全」标签页
  • 检查当前用户(包括管理员账户)是否有「读取」权限,如果没有,点击「编辑」添加权限,勾选「读取」和「读取及执行」
  • 另外,确认文件没有被其他进程占用(比如被记事本、其他编辑器打开着),文件被占用也会导致访问被拒

额外提醒

别误以为用管理员身份运行VS,应用运行时就是管理员身份哦!VS的运行身份和应用的运行身份是完全分开的——除非你特意设置应用以管理员身份启动(右键快捷方式→属性→兼容性→勾选「以管理员身份运行此程序」),但这对UWP应用不适用,UWP本身不支持管理员权限运行。

内容的提问来源于stack exchange,提问作者egi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:02:03