在回收站中获取IPropertySetStorage for File

时间:2011-05-11 15:19:22

标签: c++ properties com windows-shell

我正在尝试从文件(标题,作者等)枚举文件属性,并且发现特别是在回收站中枚举文件存在问题。但是,在确定了我认为是问题之后,我确信其他文件夹可能会出现同样的问题。

我发现通过ITEMIDLISTILCreateFromPath等方法创建的ParseDisplayName受某些特殊文件夹中的desktop.ini的影响(见下文),这将导致ITEMIDLIST中使用的ITEMIDLIST在我用于获取文件的BindToObject接口的SHBindToObject(或IPropertySetStorage)中失败,我用它来枚举文件属性。

为了描述“受desktop.ini's影响”的含义,我发现它返回了一个由desktop.ini更改名称的路径,例如通过翻译桌面中的“LocalizedResourceName”。 ini和ITEMIDLIST中返回的路径不再与磁盘上的实际路径一致。这会导致绑定方法失败,并显示HRESULT 0x80070002。

根据我所做的调试和研究,我认为我的问题有两种可能的解决方案。但是,我目前不知道如何做,或者事实上,如果可能的话。这让我想到了这一系列问题:

1)是否可以通过某些不受Desktop.ini影响的方法获取IPropertySetStorage

2)有没有办法获得文件的ITEMIDLIST接口使用{{1}}?

或者,如果有人有更好的方法来获取有关文件的一般信息,我会很感激。

1 个答案:

答案 0 :(得分:0)

shell属性页面也不适用于Windows资源管理器中回收站中的文件,所以我猜答案是否定的。