【问题标题】:shell.NameSpace(path) returns null when path is a portable device's folder当 path 是便携式设备的文件夹时,shell.NameSpace(path) 返回 null
【发布时间】:2019-05-20 02:49:10
【问题描述】:

我正在尝试将文件从一个路径移动到另一个路径,目标路径需要支持便携式设备,例如 android 手机。

在发现FolderBrowserDialog 不支持便携式设备后,我发现this 博客解释了如何使用Shell32COM-Objects

问题是我需要存储路径(字符串)并将其加载回(从文件)作为Folder 对象,这样做的方法是使用shell 方法shell.NameSpace(path)。 这仅适用于系统路径,否则它将返回 null:

 shell = new Shell();
 Folder folder = shell.BrowseForFolder((int) Handle, "Select folder", 0, 0);
 Folder folderFromPath = shell.NameSpace((folder as Folder3).Self.Path);
 //folderFromPath is null if I choose android device folder.

虽然这有效:

Folder folderFromPath = shell.NameSpace("C:\\Program Files");
 //folderFromPath is not null

还有其他方法吗?

【问题讨论】:

    标签: c# .net shell32


    【解决方案1】:

    所以显然我的 android 设备生成了这个路径: ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_2717&pid_ff40#329682240804#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{10001,,54091657216}\{46DD6D4D-0000-0000-0000-000000000000}

    将此路径传递给 shell.NameSpace 方法不起作用,但出于某种未知原因 删除 SID-{10001,,54091657216} 部分使其工作。

    我真的不知道这部分是什么意思(尽管它是设备内部存储的参考),是哪些设备生成它,此外,为什么没有其他人发布。

    但如果其他人遇到这个问题,我希望这会有所帮助:)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 2013-09-01
      相关资源
      最近更新 更多