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

UWP C#:能否固定FolderPicker路径且不弹出对话框访问C盘?

关于FolderPicker指定固定文件夹与无对话框访问C:\的问题

嘿,我来帮你理清这个问题:

首先直接给你结论:FolderPicker本身没办法直接指定固定文件夹并跳过弹出对话框,而且无对话框直接访问C:\根目录,在UWP的安全机制下是有严格限制的,不是随便就能实现的,下面详细说:

为什么FolderPicker不能跳过对话框指定固定文件夹?

FolderPicker的核心设计就是依赖用户主动交互授权——UWP应用默认处于沙箱环境,只能访问应用自身存储、系统预设的库(比如图片、文档库)等有限位置。要访问像C:\这种沙箱外的路径,必须由用户手动通过Picker选择文件夹,系统才会授予应用访问该位置的权限,这是Windows为了保护用户文件安全强制的规则。

那有没有办法无对话框访问C:\?

有两种可行的方案,但都有前提条件:

  • 声明broadFileSystemAccess受限功能
    如果你的应用是桌面桥接(Desktop Bridge)打包的应用,或者是针对Windows 10/11的桌面应用,可以在Package.appxmanifest中声明这个受限功能。声明后,你就能直接通过路径访问C:\,不需要依赖FolderPicker。不过注意:这个功能需要应用商店审核,而且用户可以在系统设置里随时关闭这个权限。
    示例代码:
    // 前提:已在Package.appxmanifest中添加broadFileSystemAccess权限
    StorageFolder cDrive = await StorageFolder.GetFolderFromPathAsync(@"C:\");
    StorageFile file = await cDrive.GetFileAsync("Kundenliste.xml");
    
  • 利用FutureAccessList的前提是用户已授权过
    你代码里用到的StorageApplicationPermissions.FutureAccessList.Add(pfolder),是用来保存用户已经通过Picker选择过的文件夹的权限,之后再次访问这个文件夹时可以跳过Picker。但这必须建立在用户已经手动选择过一次C:\文件夹的基础上,没办法首次访问就直接跳过对话框。

补充:如果是传统桌面应用(非UWP)

如果你的应用不是UWP,而是WPF、WinForms这类传统桌面应用,那根本不需要用FolderPicker或者UWP的存储API,直接用System.IO命名空间下的类就能访问C:\,比如:

FileInfo file = new FileInfo(@"C:\Kundenliste.xml");
// 后续操作...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:10:29