如何构建mtp设备的路径(可在文件夹浏览对话框中使用)?

时间:2012-11-19 11:25:24

标签: path copy folderbrowserdialog wpd mtp

我实现了从windows pc到Android设备的文件传输,该设备与MTP连接到计算机。复制实现已准备就绪(我使用此示例:http://code.msdn.microsoft.com/windowsdesktop/Portable-Devices-COM-API-fd4a5f7d)。

现在我想改进UI,我想提供一个文件夹选择对话框,用户可以在其中选择一个MTP设备文件夹,我将保存文件(CLSID_FileOpenDialog与FOS_PICKFOLDERS工作正常)。请注意,简单文件保存对话框不起作用,因为您将从对话框中收到错误:“您无法在此处保存”。

文件夹浏览的结果与此类似:
:: {20D04FE0-3AEA-1069-A2D8-08002B30309D} \\ \ USB#vid_04e8&安培; pid_6860&安培; MI_00#6和; 2296b879&安培0安培; 0000#{6ac27878-a6fa-4155-BA85-f98f491d4f33} \ SID- {10001, SECZ9519043CHOHB,12635222016} {01B8016B-0164-00F2-E100-55012C014001}

USB#vid_04e8&安培; pid_6860&安培; MI_00#6和; 2296b879&安培0安培; 0000#{6ac27878-a6fa-4155-BA85-f98f491d4f33}
我知道这是设备,IPortableDeviceManager使用它作为设备ID。

SID- {10001,SECZ9519043CHOHB,12635222016} \ {01B8016B-0164-00F2-E100-55012C014001}
这是设备上的路径。这些GUID是设备对象的WPD_OBJECT_PERSISTENT_UNIQUE_ID属性。

有了这些信息,我可以选择设备并在设备中找到该文件夹​​,这样我就可以复制了。

我的问题是我还想在设备上的folderbrowsedialog中选择一个默认目录,而我无法创建上面提到的路径。请注意,如果我将其作为默认路径,则会在正确的文件夹中开始浏览。

有问题的部分是起始GUID,我无法得到:
:: {20D04FE0-3AEA-1069-A2D8-08002B30309D}

我也查看了注册表。我只在一个条目中找到了这个GUID:
HKEY_USERS \ S-1-5-21-2044730494-4069800027-1247311059-1000 \软件\微软\的Windows \ CurrentVersion \ Explorer中\ CLSID {20D04FE0-3AEA-1069-A2D8-08002B30309D} \的DefaultIcon
这个值是什么:
C:\ WINDOWS \ SYSTEM32 \ imageres.dll,-109
(CLSID子文件夹包含更多GUID,因此我找不到,哪个是正确的)

您是否知道如何让此GUID能够构建整个默认路径?

1 个答案:

答案 0 :(得分:1)

那个guid代表Computer文件夹,MTP设备的shell命名空间扩展是一个Computer文件夹委托。您可以使用此guid作为常量来构造文件夹浏览器的解析名称。

此致 丽萨