Получить IPropertySetStorage для файла в корзине - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь перечислить свойства файла из файлов (заголовок, автор и т. Д.) И обнаружил, что перечисление файлов в Корзине, в частности, проблематично.Однако, определив, что я считаю проблемой, я уверен, что в других папках могут возникнуть те же проблемы.

Я обнаружил, что 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?

В качестве альтернативы, если у кого-то есть лучший метод для получения этой информации ов общем файлы, буду признателен за совет.

1 Ответ

0 голосов
/ 11 мая 2011

Страница свойств оболочки также недоступна для файлов в корзине в Windows Explorer, поэтому я думаю, что ответ - нет.

...