如何在.NET 4.5.2 WinForms程序中访问安卓手机外置存储卡DCIM文件夹
访问安卓MTP设备外置存储卡的DCIM文件夹(.NET 4.5.2 WinForms)
你看到的Username@MachineName\Galaxy Phone Model\Card\DCIM是MTP设备的虚拟命名空间路径,并非传统本地文件系统路径,无法直接用System.IO类访问。下面提供无需第三方库的实现方案,依赖Windows原生的Shell COM组件:
实现步骤
1. 添加Shell32 COM引用
在WinForms项目中:
- 右键项目 → 选择「添加引用」
- 切换到「COM」标签页,找到并勾选 Microsoft Shell Controls And Automation(对应
Shell32.dll) - 点击确定完成引用添加
2. 编写代码遍历MTP设备路径
通过Shell命名空间定位到目标DCIM文件夹,可遍历或操作其中的文件:
using Shell32; using System; using System.Windows.Forms; public partial class YourForm : Form { public YourForm() { InitializeComponent(); NavigateToAndroidDcim(); } private void NavigateToAndroidDcim() { var shell = new Shell(); // 访问桌面命名空间(所有可访问设备/文件夹的根入口) var desktopFolder = shell.NameSpace(0x0000); // CSIDL_DESKTOP的数值常量 // 遍历桌面项,匹配你的Galaxy设备名称 foreach (FolderItem item in desktopFolder.Items()) { // 替换为你实际的设备名称,可根据需求调整匹配逻辑(比如包含"Galaxy"关键词) if (item.Name.Equals("Galaxy Phone Model", StringComparison.OrdinalIgnoreCase)) { var deviceFolder = item.GetFolder(); if (deviceFolder == null) continue; // 定位到外置存储卡(Card) var cardItem = deviceFolder.ParseName("Card"); if (cardItem == null || !cardItem.IsFolder) continue; var cardFolder = cardItem.GetFolder(); // 定位到DCIM文件夹 var dcimItem = cardFolder.ParseName("DCIM"); if (dcimItem == null || !dcimItem.IsFolder) continue; var dcimFolder = dcimItem.GetFolder(); // 遍历DCIM文件夹内的文件/子文件夹 foreach (FolderItem fileItem in dcimFolder.Items()) { Console.WriteLine($"找到:{fileItem.Name}"); // 示例:复制文件到本地文件夹 // var localFolder = shell.NameSpace(@"C:\YourLocalPath"); // localFolder.CopyHere(fileItem); } break; } } } }
关键注意事项
- 设备名称匹配:代码中
"Galaxy Phone Model"需要替换为你资源管理器中显示的实际设备名称,也可以改成模糊匹配(比如item.Name.Contains("Galaxy"))提升兼容性 - 异步操作提醒:
CopyHere方法是异步执行的,如果需要等待复制完成,需自行实现等待逻辑(比如定期检查目标文件夹的文件状态) - 权限问题:确保应用有足够的权限访问MTP设备,Windows 10/11可能会弹出授权提示,需用户确认
- COM对象释放:生产环境中建议使用
try-finally包裹Shell对象,确保资源正确释放:Shell shell = null; try { shell = new Shell(); // 执行操作 } finally { if (shell != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(shell); }
内容的提问来源于stack exchange,提问作者Nick_F
相关产品推荐
相关产品推荐

