【问题标题】:Read / write a file in a shell namespace extension using shell APIs使用 shell API 读取/写入 shell 命名空间扩展中的文件
【发布时间】:2013-06-10 07:49:46
【问题描述】:

我使用 SHGetDesktopFolder() 获取 PIDL,然后使用 IShellFolder 遍历其内容。

我现在有一个引用文件系统位置的特定 PIDL,我可以使用 BindToStorage 和 IStorage 来 .OpenStream() 和 .Write() 文件。

如果有趣的东西存在于文件系统中,这一切都很好,但更有趣的东西存在于“Shell 命名空间扩展”中。

特别是,我有一个 Pocket PC 2002 设备(特别是符号 PDT8146),它使用 Windows Mobile Device Center 连接到我的 Windows 7 机器。这个应用程序创建了一个 shell 命名空间文件夹,我可以在资源管理器中使用它来读取/写入文件。

我不能做的是使用命令行或 win32 API 向其写入文件。

按照我上面概述的策略,我可以获得引用设备的 PIDL 和 IShellFolder 实例,并且可以列出它的文件。但是,当我尝试访问 IStorage 时,IShellFolder.BindToStorage() 失败并显示“不支持此类接口”。

我应该研究另一个 shell 接口来在这个顽固的设备上读/写文件吗?

【问题讨论】:

    标签: windows shell com namespaces istorage


    【解决方案1】:

    试试IShellFolder.BindToObject:

    IStream *stream;
    if (FAILED(shellfolder->BindToObject (pidl, NULL, IID_IStream, &stream)))
      return E_FAIL;
    

    但我不确定这是否也适用于写入文件。

    【讨论】:

    • 我还不能测试它,但即使它确实适用于现有文件 i/o,我该如何将新文件写入设备?
    • 我也不确定,我从来不需要写权限。
    猜你喜欢
    • 2013-02-14
    • 2012-08-28
    • 2012-09-02
    • 2019-11-13
    • 1970-01-01
    • 2012-08-25
    • 2020-03-30
    • 1970-01-01
    • 2018-10-22
    相关资源
    最近更新 更多