我正在尝试从文件(标题,作者等)枚举文件属性,并且发现特别是在回收站中枚举文件存在问题。但是,在确定了我认为是问题之后,我确信其他文件夹可能会出现同样的问题。
我发现通过ITEMIDLIST或ILCreateFromPath等方法创建的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}}?
或者,如果有人有更好的方法来获取有关文件的一般信息,我会很感激。
答案 0 :(得分:0)
shell属性页面也不适用于Windows资源管理器中回收站中的文件,所以我猜答案是否定的。