Добавить новые свойства метаданных в файл

Я хочу добавить некоторые свойства метаданных в некоторые файлы. Точно так же, как и файлы Owner, Computer, Title, Subject и т.д. Для файлов doc, я хочу иметь возможность добавлять некоторые пользовательские атрибуты. Как это можно сделать?

Ответ 1

Как уже упоминалось, это зависит от файловой системы. Таким образом, это будет работать только с NTFS.

Один из способов создания потоков ADS: см. историю изменений.

Другой способ - использовать DSOFile-Library, которая предназначена для работы только с файлами Office. Но он работает на каждом файле.

Сначала загрузите библиотеку здесь (x64 + x86): ЗАГРУЗИТЬ

ВАЖНО: Поскольку DSO OLE - это 32-битная DLL, она будет работать только при установке целевого процессора компиляции на x86. В противном случае это вызовет исключение. Также доступна доступная 64-битная версия: Как читать пользовательские свойства файла в С#

Затем создайте ссылку на COM-DLL в своем проекте (щелкните правой кнопкой мыши по решению → Добавить ссылку → вкладка COM → Добавить "DSO OLE Document Property Reader v2.1" ) и используйте пространство имен:

using DSOFile;

После этого вы можете создать свои собственные атрибуты:

Прежде всего откройте файл:

OleDocumentProperties myFile = new DSOFile.OleDocumentProperties();
myFile.Open(@"MYPATHHERE", false, DSOFile.dsoFileOpenOptions.dsoOptionDefault);

Создайте объект для вашего значения: object yourValue = "Your Value";

Затем проверьте, есть ли уже свойство, подобное тому, которое вы хотите создать:

foreach (DSOFile.CustomProperty property in myFile.CustomProperties)
{
   if (property.Name == "Your Property Name"){
      //Property exists
      //End the task here (return;) oder edit the property
      property.set_Value(yourValue);
   }
}

Затем после проверки существующих атрибутов вы можете добавить атрибут:

myFile.CustomProperties.Add("Your Property Name", ref yourValue);

Чтобы завершить задачу, сохраните и закройте файл:

myFile.Save();
myFile.Close(true);

Вы можете скачать образец проекта на моей домашней странице.

Теперь до части отображения атрибутов в проводнике.

Для этого вам нужно создать расширение оболочки. Для получения дополнительной информации об этом посетите страницу Codeproject.

Я создал один, вы можете скачать его здесь. Но вы должны подписать его еще раз (найдите "как" на указанная страница).

Это будет выглядеть при щелчке правой кнопкой мыши на файле .css/.js/.txt: Shell extension with Sharpshell
Или создайте вкладку собственных свойств:
CustomPropertiesTab
Вы можете скачать образец здесь: ЗАГРУЗИТЬ

Для получения дополнительных сведений о Dsofile.dll и других источниках см. Microsoft Dsofile.dll