如何通过编程访问Windows文件资源管理器中的非文件系统条目?
问题描述
Windows文件资源管理器会显示部分无法通过常规文件系统访问的条目(例如Java的文件读写操作无法访问)。比如通过USB连接的Garmin EPIX智能手表,在「此电脑」下的「EPIX」条目在文件资源管理器中表现类似USB文件系统,但Java、Python等编程语言无法在根目录「/」中找到它。
作为熟悉Unix系统、期望所有资源都存在于文件系统中的用户,希望了解如何让程序像文件资源管理器那样访问「EPIX」下的文件,能否通过特定名称打开这类设备或伪文件对象?
解决方案与原理说明
特殊文件夹分类
Windows资源管理器中的特殊文件夹分为两类:
- 映射真实路径的类型:「图片」「视频」「文档」「桌面」这类特殊文件夹对应环境变量指定的文件系统路径,右键查看属性即可看到映射位置,程序可直接通过对应路径访问。
- 资源管理器扩展实现的类型:「网络」「回收站」「库」「控制面板」以及Garmin EPIX这类MTP设备,属于资源管理器扩展功能,系统文件层无法识别,不会像Unix系统那样挂载到文件系统中,常规编程语言的文件API无法直接访问。
MTP设备的可行方案
针对Garmin EPIX这类MTP设备,可使用类Linux FUSE实现的dokany工具搭配MTPmount,将设备挂载为磁盘驱动器号。挂载后,程序就能像访问普通本地磁盘一样,通过驱动器号路径(例如E:\)读写设备内的文件。
内容的提问来源于stack exchange,提问作者Ribo
相关产品推荐
相关产品推荐

