尝试使用 C# 写入关键字 windows 元数据项

Trying to write to the Keywords windows metadata item using C#

我们有几个人,现在正在浏览一个包含数千个 jpg 的目录,并在 Windows 资源管理器中手动设置标签元数据项。我想做点什么来阅读他们从中获取标签并将其应用于文件的电子表格。

在我所做的研究中,似乎 Windows 中的 "Tags" 元数据实际上是 "Keywords" 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();

问题是关键字 属性 是一个只读集合。我发现了几个关于写入此元数据的 "leads",但其中 none 似乎有效。它特别糟糕,因为如果我在记事本++中打开文件,我可以 查看 元数据存储的确切位置,但是它们周围的 xml 标签的数量已经够乱了只是手动将东西塞在那里是行不通的。有没有人知道如何使用 C# 写入 Windows 中的关键字 jpg 元数据?

为了表明我真的尝试过,这里有一堆我试过使用的链接:

经过更多的谷歌搜索(使用没有多大意义的关键字),我终于找到了另一个问题,它告诉我们如何使用 Windows API 代码包: Is it possible to set/edit a file extended properties with Windows API Code Pack?

要获取代码包,请在 VS 中打开包管理器控制台并输入 Install-Package WindowsAPICodePack

MS 自己已经从 MSDN 的存档中提取了这个包,因此 NuGet 是获取它的唯一方法。据估计,他们会使这比需要的难 50 倍,特别是因为关于他们的 属性 系统的 MSDN 文章吹嘘它是如何在 Windows.

中管理文件的未来