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


一旦在 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\”之前。但我什至不确定这是否相关。
有谁知道我还可以尝试什么?