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

UWP开发:如何获取指定文件夹内的快捷方式文件

问题核心原因

你枚举不到快捷方式的情况,是UWP沙箱的强制文件过滤规则导致的,和你写的代码逻辑本身没有关系:

  • .lnk是Windows Shell层面的链接类文件,UWP为了避免应用通过解析快捷方式间接越权访问未授权的文件路径,在所有常规文件枚举接口中,都会默认把这类Shell链接项从返回结果里剔除。
  • 哪怕你的代码是调用的GetItemsAsync(),哪怕后续搭配QueryOptions加上.lnk的文件后缀筛选、调整排序规则,只要在纯UWP沙箱上下文运行,枚举结果里都不会出现.lnk项;就算直接拿.lnk的完整路径调用StorageFile.GetFileFromPathAsync(),也会被系统拦截,抛出文件不存在的错误。
  • 你代码里写的“文件优先于文件夹排序”的逻辑本身没有问题,只是被系统过滤的.lnk项根本到不了排序环节,自然不会出现在最终的列表里。
纯UWP方案的可行性结论

目前没有任何公开的纯UWP API可以突破这套系统过滤规则:

  • 就算给应用申请了broadFileSystemAccess的全文件系统访问权限,这套针对.lnk的枚举过滤逻辑依然生效,没法正常获取到快捷方式项。
  • 所有涉及Shell接口、系统文件索引的相关API,在纯沙箱UWP场景下要么权限不足无法调用,要么依然受上述过滤规则限制,根本达不到获取快捷方式的目的。
实际可落地的实现思路

要实现快捷方式的枚举展示,最适配课程项目场景的方案,就是搭配Win32 FullTrustProcess组件,完全不需要把整个应用改造为全桌面桥应用:

  • 只需要在解决方案里加一个极轻量的Win32小程序,把它声明为应用的FullTrust组件即可。这个组件运行在传统Win32权限上下文,不受UWP沙箱的访问限制,可以直接通过传统文件API枚举文件夹内所有的.lnk实体文件,甚至可以直接解析快捷方式指向的目标路径。
  • 组件和UWP主进程之间通过AppService完成通信:FullTrust组件拿到文件列表后,把每个文件的完整路径传回UWP侧,UWP只需要把这些路径转换为可展示的列表项就行,整体开发量很低,完全能满足项目需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 01:54:07