gpt4 book ai didi

.net - Windows 资源管理器在哪里存储文件元数据?

转载 作者:行者123 更新时间:2023-12-04 02:19:43 29 4
gpt4 key购买 nike

在 Windows 7 中,我可以将元数据添加到文件中,例如标题、评级等。这个元数据究竟存储在哪里?对于 NTFS,他们可能会使用备用数据流,但我这个元数据也恰好在 FAT32 中工作,那么他们是如何做到的呢?是否有 API 可以使用此功能?

最佳答案

In Windows 7 I can add meta data to files [using Explorer] for example title, rating and so on. Where is this meta data stored exactly?



此元数据称为属性。从 Windows Vista 开始,它就以这种方式可用。

Windows 资源管理器以统一的方式呈现属性,这可能会让您误以为它们都来自同一家商店。但这种情况并非如此。

属性通过 API 公开给程序员。 (见下文。)

它们的确切存储位置是实现细节。这取决于文件类型和属性类型。例如,文件系统时间戳作为属性公开。媒体文件元数据(例如图像的 EXIF 或 MP3 的 ID3 标签)存储在文件本身中。其他元数据可能存储在您正在检查其属性的文件随附的 XML 文件中。

那么它存储在哪里呢?答案是:这真的取决于,你真的不必担心,也不应该担心。因为,正如我所说,它是一个实现细节,就编程而言,担心实现细节意味着绕过 API。

在 API 级别处理属性时,您也不必担心属性存储在哪里。见 IShellItem2 IPropertyStore 入口点的 COM 接口(interface)。

在幕后,Windows Vista 和更高版本提供了了解文件类型以及如何读取和写入其属性的属性处理程序。您可以编写自己的属性处理程序(使用 COM)并将其添加到 Explorer(作为所谓的 shell 扩展)。

我发现的最有用的文档是 Ben Karas' blog entries around the time of the Vista release starting in August 2006 .他已经完成了关于属性(property)系统的整个系列。这是一个非常有用的教程,对使用 Windows 7 的我来说,它已经 100% 有效。

不要遵循此页面上另一个回复中给出的建议来阅读有关 COM 结构化存储的信息。这仅适用于特定的文件类型。在 words of Ben Karas :

Gotcha: Many people mistakenly call StgOpenStorageEx. Don't do that! StgOpenStorageEx is only supported for specific formats like OLE Compound Documents or NTFS secondary stream storage. StgOpenStorageEx doesn't know how to read the EXIF header from a .JPG image.

关于.net - Windows 资源管理器在哪里存储文件元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080319/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com