尝试使用C#写入关键词Windows元数据项

4
我们现在有几个人正在浏览数千个jpg文件的目录,并手动设置它们在Windows资源管理器中的标签元数据项。我想制作一些工具来读取他们从电子表格中获取的标签并将其应用于文件。
根据我的研究,Windows中的“标签”元数据实际上是“关键字”xmp元数据。我已成功使用以下代码读取此元数据:
FileStream fs = new FileStream(@"C:\test.jpg", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
        BitmapSource img = BitmapFrame.Create(fs);
        BitmapMetadata md = (BitmapMetadata)img.Metadata;
        StringBuilder tags = new StringBuilder();
        foreach (String s in md.Keywords)
        {
            tags.Append(s);
            tags.Append(";");
        }
        String fin = tags.ToString();

问题在于Keywords属性是只读集合。我发现了一些关于写入此元数据的“线索”,但它们中没有一个似乎有效。这特别糟糕,因为如果我在notepad++中打开文件,我可以看到元数据存储的确切位置,但是围绕它们的xml标记数量太杂乱,以至于尝试手动将东西塞进去是行不通的。有人有关于如何使用C#在Windows中写入Keywords jpg元数据的信息吗?
只是为了证明我真的尝试过,这里有一堆我尝试使用的链接:
- MSDN thread - ASP.net thread
1个回答

2
经过更多的搜索(使用一些不是很有意义的关键词),我最终找到另一个问题,它告诉我们如何使用Windows API代码包来完成:Is it possible to set/edit a file extended properties with Windows API Code Pack? 要获得代码包,请在VS中打开包管理器控制台并输入Install-Package WindowsAPICodePack 微软已经从MSDN的存档中删除了这个软件包,因此NuGet是获取它的唯一途径。他们让这个过程变得比必要的困难了50倍,尤其是因为有关其属性系统的MSDN文章吹嘘它是Windows文件管理的未来。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接