关于扩展支持安卓手机等外接存储设备

功能建议 · 11 次浏览
沉没的白鲸 创建于 6天15小时前

最近发现PowerShell脚本可以获取到USB外接设备列表,进而得到打开安卓手机文件夹的路径,参考动作

# 获取所有 USB 设备,筛选出符合条件的设备
$usbDevices = Get-WmiObject -Query "SELECT * FROM Win32_PnPEntity WHERE DeviceID LIKE 'USB%'"
# 筛选符合条件的设备
$filteredDevices = $usbDevices | Where-Object { 
    $_.Service -eq "WUDFWpdMtp" 
}
# 将符合条件的设备以 CSV 格式的文本输出 名DeviceID设备ID(指向路径的一部分)、称Name
$filteredDevices | ForEach-Object {
    "$($_.DeviceID):$($_.Name)"
}

老大也许可以用更简洁代码合并到这个子程序里面,改进这个子程序只是开始,进一步可以研究改进 事件触发的磁盘插入事件,目前只对接入U盘和硬盘会触发事件,希望可以增加对  USB连接的手机的识别 ,讨论区也有人提过检测相机连接到电脑 我没有相机不确定,只能确定安卓手机是有效的。

 

后面的需求可能很冷门有兴趣的话再看看:进一步改善【获取资源管理器路径/跳转路径】模块获取的路径、所有打开的路径,目前的手机路径既无法辨识也不能使用。

再进一步改善排序,资源管理器操作(子程序https://getquicker.net/subprogram?id=2c336234-de82-4f82-f963-08dabe0047bb&version=7)的顺序和任务栏一致,而qk获取的列表和访问顺序一致,  感觉任务栏顺序更符合直观,如果能给个选项提供这种排序结果。

 

 

 

 ============================================================================

以下信息供参考:

一、运行模块能使用的有效路径:

1::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_22d9&pid_2765&mi_00#6&19a66ed&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\内部共享存储空间\Pictures

 

2::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_2717&pid_ff40#1ec12364#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\内部存储设备\Pictures

 

此电脑(win10win11此电脑,Win7计算机)\\\?\usb#vid&pid&USB调试固定标识#USB调试数字&手机码&USB调试补充标识#固定结尾\存储空间名称\手机实际路径

 

主要分为2类,(带背景颜色)固定开头结尾部分、vidpid码、手机码,以及(不带背景颜色)根据情况而定的USB调试标识、存储空间名称、手机实际路径

注:这些名称我只是暂时这么写,没有找到具体的资料。例1USB调试是开启状态安卓14,例2没有开启USB调试安卓8

此电脑USB固定开头:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb

vid&pid码:vid码品牌相关,同品牌手机一致;pid码品牌型号、MTP(PTP)USB调试相关,同品牌手机全部条件相同时可能一致(条件不确定)。

USB调试固定标识:USB调试开启时才有,否则无。

USB调试数字: USB调试开启时才有,通常一位数字6(或9,条件不确定)。和下方的手机码 可以通过PowerShell脚本得到。

手机码:手机相关,根据MTP(PTP)USB调试显示,即一部手机在各种状态下至少有4个固定的手机码。

USB调试补充标识:USB调试开启时才有,通常&0&0000(或&1&0000条件不确定)

固定结尾:路径到此为止可以打开“此电脑”设备和驱动器的手机(相当于磁盘卷C:\ D:\)后续可以按需添加存储空间名称、手机实际路径。

存储空间名称:安卓版本相关,内部共享存储空间(安卓14-13)或内部存储设备(安卓12-8)。

手机实际路径:电脑上面为手机\存储空间名称之后的路径(手机目录为/storage/emulated/0/),可以是文件夹和部分类型的文件,文件夹为打开窗口,文件会自动下载到本地缓存文件夹进行播放,比如图片、mp3、视频。

 

 

 

二、【获取资源管理器路径/跳转路径】模块获取的路径:

::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_22d9&pid_2765&mi_00#6&19a66ed&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{10001,,241916936192}\{675778CF-2BA1-30B0-0000-000000000000}

::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_22d9&pid_2771#287bb3d1#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{10001,,114240204800}\{0AEC74FE-0000-0000-0000-000000000000}

 

三、区别和一些规律

目前的模块获取路径的存储空间名称手机实际路径部分是 Guid标识符(同一部手机同一个路径是固定的与其它状态无关),并不能在运行模块中使用。

规律1:在某些情况下(在手机上面修改少量文件?)会整体重新生成手机实际路径Guid(也可能一部分和之前一样),存储空间名称Guid不会变。

规律2:同样的文件夹名的子文件夹比如\Pictures\Pictures Guid完全不同\{0B3AF336-0000-0000-0000-000000000000}\{59DB243C-0000-0000-0000-000000000000}

折中的思路:文件夹选项标题显示完整路径,  窗口标题可以得到“此电脑\MI 6\内部存储设备\Pictures“,结合PowerShell脚本的设备信息拼接出路径。


回复内容
暂无回复
回复主贴