Я пытаюсь перечислить свойства файла из файлов (заголовок, автор и т. Д.) И обнаружил, что перечисление файлов в Корзине, в частности, проблематично.Однако, определив, что я считаю проблемой, я уверен, что в других папках могут возникнуть те же проблемы.
Я обнаружил, что ITEMIDLIST создается с помощью таких методов, как ILCreateFromPath или ParseDisplayName зависит (см. Ниже) от desktop.ini, расположенного в определенных специальных папках, что приведет к сбою ITEMIDLIST
при использовании в BindToObject (или SHBindToObject ), который я использовал для получения интерфейса IPropertySetStorage для файла, который я использую для перечисления свойств файла.
Для описания того, что я имею в виду«под влиянием desktop.ini» я обнаружил, что он возвращает путь, имя которого изменено desktop.ini, например, путем перевода «LocalizedResourceName» в desktop.ini и пути, возвращенного в ITEMIDLIST
больше не соответствует фактическому пути на диске.Это приводит к сбою методов Bind с HRESULT 0x80070002.
На основании отладки и исследований, которые я провел, я предполагаю, что есть два возможных решения моей проблемы.Тем не менее, я в настоящее время не знаю, как это сделать, или на самом деле, если это возможно.Это подводит меня к следующему набору вопросов:
1) Возможно ли получить ITEMIDLIST
каким-либо способом, который НЕ подвержен влиянию desktop.ini, который может находиться в папке?
2) Есть ли способ получить IPropertySetStorage
интерфейс файла без использования ITEMIDLIST
?
В качестве альтернативы, если у кого-то есть лучший метод для получения этой информации ов общем файлы, буду признателен за совет.