将新的元数据属性添加到文件中

时间:2013-11-13 07:30:17

标签: c# powershell metadata

我想为某些文件添加一些元数据属性。就像doc文件的所有者,计算机,标题,主题等一样,我希望能够添加一些自定义属性。怎么办?

1 个答案:

答案 0 :(得分:13)

如前所述,它取决于文件系统。 所以这只适用于NTFS。

一种方法是创建ADS流:请参阅编辑历史记录。

另一种方法是使用DSOFile-Library,它仅用于处理Office文件。 但它适用于每个文件。

首先在这里下载库(x64 + x86):DOWNLOAD

重要: 由于DSO OLE是32位DLL,因此只有在将编译目标CPU设置为x86时才能工作。否则会抛出异常。 还有一个64位版本可用:How to read custom file properties in c#

然后在项目中创建对COM DLL的引用(右键单击解决方案 - >添加引用 - > COM选项卡 - >添加“DSO OLE文档属性读取器v2.1”)并使用命名空间:

using DSOFile;

之后,您可以创建自己的属性:

首先打开文件:

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

为yourValue创建一个对象: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);

您可以下载sample project on my homepage

现在到了在资源管理器中显示属性的部分。

您必须为此创建一个shell扩展。有关详细信息,请访问the Codeproject page

我创建了一个,you can download it here.但是你必须再次签名(在所提到的页面上寻找“操作方法”)。

当右键单击.css / .js / .txt文件时,它看起来像这样: Shell extension with Sharpshell
或者创建自己的属性选项卡:
CustomPropertiesTab
您可以在此处下载示例:DOWNLOAD

有关Dsofile.dll和其他来源的详细信息,请参阅Microsoft Dsofile.dll