【问题标题】:Add new metadata properties to a file将新的元数据属性添加到文件
【发布时间】:2013-11-13 07:30:17
【问题描述】:

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

【问题讨论】:

  • 取决于文件(文件类型)和文件系统

标签: c# powershell metadata


【解决方案1】:

如前所述,它取决于文件系统。 所以这只适用于 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 Document Property Reader 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 文件时,它看起来像这样:
或创建您自己的属性选项卡:

您可以在此处下载示例:DOWNLOAD

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

【讨论】:

  • 你可以在这里下载dsofiles:abouchleih.com/wp-content/uploads/dsofile.zip SharpShell dll可以在这里下载:abouchleih.com/wp-content/uploads/SharpShell-Project.zip这些是我使用和使用的版本
  • 您在第一版评论中提到可以使用ADS添加文件属性,如果这样添加属性,它们会被Windows资源管理器识别并显示在详细信息类别中吗?跨度>
  • 仅显示文件中存储的元数据,因为您安装的程序注册了 shell 扩展名(例如 M$ Office,..),或者已经是 Windows 资源管理器的一部分(> 显示.exe 文件,例如版本,因为 .exe 是 M$ 特定的文件格式)。
  • 我知道这是一个旧线程,但无论如何。它在“正常”情况下工作,但是当我尝试从扩展(例如来自 SharpShell 的覆盖扩展)访问 OleDocumentProperties 类时,我收到此错误:检索组件的 COM 类工厂失败。班级未注册。你怎么解释这个?
  • 您是否使用 regsrv32/regasm 安装并注册了 DLL?可能有问题。看这里,希望对你有帮助:stackoverflow.com/questions/18843008/…
猜你喜欢
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2013-11-08
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
  • 2017-04-22
相关资源
最近更新 更多