Я хочу добавить некоторые свойства метаданных в некоторые файлы. Точно так же, как и файлы 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:
Или создайте вкладку собственных свойств:
Вы можете скачать образец здесь: ЗАГРУЗИТЬ
Для получения дополнительных сведений о Dsofile.dll и других источниках см. Microsoft Dsofile.dll