如何将 IPropertyBag 保存到磁盘

How to persist an IPropertyBag to disk

本文关键字:磁盘 保存 IPropertyBag      更新时间:2023-10-16

我已成功获取文件夹视图状态的IPropertyBag。 我使用SHGetViewStatePropertyBag获得了它,并且我已经通过检查一些属性值确认该包是有效的。

如果可能,我现在要做的是将属性包作为 blob 保存到磁盘。 我一直在包上运行QueryInterface,但我无法获得任何有用的接口。 不幸的是,属性包似乎不支持IPersistStream接口。 而且我也无法成功查询IPersistPropertyBag接口。

有没有为属性包获取某种持久接口的技巧? 还是必须以临时方式单独保存属性? 提前感谢您的任何指导。

IPropertyBag上调用Write应该会自动将更改写入磁盘。

通常,IPersistXXX 接口由可以将自身保存到 XXX 中的对象实现(其中 XXX 是 Stream 或 PropertyBag(,同时IPropertyBagIStream应该由某些东西支持——磁盘、内存块或套接字。

还是想从袋子里拿走所有财产并以某种方式将它们保存在其他地方?在这种情况下,您需要查询IPropertyBag2并枚举它们。