我想为某些文件添加一些元数据属性。就像doc文件的所有者,计算机,标题,主题等一样,我希望能够添加一些自定义属性。怎么办?
答案 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文件时,它看起来像这样:
或者创建自己的属性选项卡:
您可以在此处下载示例:DOWNLOAD
有关Dsofile.dll和其他来源的详细信息,请参阅Microsoft Dsofile.dll