Задать свойства файлов Windows для не офисных файлов - PullRequest
3 голосов
/ 01 августа 2011

Я хочу установить свойства для файлов в коде .NET.Я пытался с DSOFile (v2.1), как это:

var properties = new OleDocumentProperties();
try
{
    properties.Open(filePath);
    properties.SummaryProperties.Title = "foo";
    properties.Save();
}
finally
{
    properties.Close();
}

Он отлично работает с документами Office.(Я тестировал с Word и Excel.) Однако я хочу сделать это и с другими видами документов.Когда я пытаюсь использовать файлы PDF или TXT, я получаю следующее исключение:

System.Runtime.InteropServices.COMException (0x800300FC): имя недопустимо.(Исключение из HRESULT: 0x800300FC (STG_E_INVALIDNAME)) в DSOFile._OleDocumentProperties.Save ()

Помимо настройки SummaryProperties, я также настраиваю CustomProperties.Это также хорошо работает с файлами Office, но не с другими.Моя файловая система NTFS.

Как я могу установить свойства (стандартные и пользовательские) для этого с DSOFile или любым другим способом?

1 Ответ

0 голосов
/ 25 августа 2011

dsofile.dll можно использовать для редактирования свойств документа Office, если у вас не установлен Office (см. Q224351 . Его можно использовать для изменения персистентного структурированного хранилища COM в виде файла. Можно использовать StgCreateStorageEx с IID_IStorage или IID_IPropertySetStorage в качестве параметра, чтобы открыть файл структурированного хранилища COM и затем использовать обработчик возвращенного интерфейса IStorage или IPropertySetStorage .

Старый формат документов Microsoft Office (например, .doc или .xls) - это файл структурированного хранилища COM. Более поздние версии документов Microsoft Office имеют другой формат на основе XML. В точности все новые документы Microsoft Office (например, .docx или .xlsx) могут быть переименованы в .zip и извлечены в некоторые файлы XML. Установщик Windows по-прежнему использует файл структурированного хранилища COM для представления основных файлов MSI и файлов преобразования (.mst). Еще одним примером файла структурированного хранилища COM являются файлы .lnk, используемые для ярлыков. Файл структурированного хранилища может быть полезен в случае, если кто-то попытался сохранить и изменить много частей различной информации в одном файле без риска повреждения файлов.

Двоичный формат Структурированное хранилище файлов описаны здесь .

NTFS имеет некоторую поддержку интерфейса IPropertyStorage и IPropertySetStorage для файлов NTFS, когда сами файлы не являются составными файлами (см. здесь и здесь ), но я не думаю, что вы сможет сохранить любую полезную информацию о файлах PDF или TXT.

...