小编sbn*_*bne的帖子

如何获取卷 GUID 路径的 PIDL

我试图弄清楚如何获取卷 Guid 路径(例如“ \\?\Volume{50165421-0000-0000-0000-005d25000000}\”)的 PI​​DL(或 IShellItem 或 IShellFolder)。我希望能够从我的程序或其子对象上调用文件操作或 shell 上下文菜单项。如果它已安装并可通过驱动器号或文件夹访问,没问题,但我正在努力处理未安装的卷。
虽然 Windows 资源管理器的地址栏无法解析这些名称,但可以使用 run 命令(或使用 ShellExecute)打开 Windows 资源管理器:

  • 通过“磁盘管理”,创建一个新卷,而不分配驱动器号或文件夹:创建没有驱动器的卷
  • 使用 mountvol,您可以看到带有“无挂载点”的卷名称 (1)
  • 将卷路径复制到运行命令中 (2)
  • 查看 Windows 资源管理器 (3) 在资源管理器中打开卷

一旦在 Windows 资源管理器中打开,它就可以很好地处理路径,即枚举和上下文菜单正常工作。

到目前为止我已经尝试过

实际上,我没有检查很多 IBindCtx 选项,因为从文档中我不确定该用例应该尝试哪些选项。

  • 在这里尝试了 @RbMm 共享的未记录的 IShellURL 接口- 它显示与 AddressBar 相同的错误消息框。

  • 卷管理参考中,我也没有看到 PIDL 的连接点。

  • 使用带有 Process Monitor 的 ShellExecute 跟踪卷名称的开头,我看到 Windows 资源管理器正在访问

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\?\Volume{50165421-0000-0000-0000-005D25000000},就在打开“ \Device\HarddiskVolume3\”之前。但我什至不确定这是否相关。

有谁知道我还可以尝试什么?

windows winapi windows-shell

5
推荐指数
0
解决办法
346
查看次数

标签 统计

winapi ×1

windows ×1

windows-shell ×1