在 Windows 7 中,我可以[使用资源管理器]向文件添加元数据,例如标题、评级等。这些元数据到底存储在哪里?
该元数据称为属性。从 Windows Vista 开始就以这种方式提供。
Windows 资源管理器以统一的方式显示属性,这可能会让您误以为它们都来自同一家商店。但这种情况并非如此。
属性通过 API 暴露给程序员。(见下文。)
它们的确切存储位置是实现细节。这取决于文件类型和属性类型。例如,文件系统时间戳作为属性公开。媒体文件元数据(例如图像的 EXIF 或 MP3 的 ID3 标签)存储在文件本身中。还有其他元数据可能存储在与您正在检查其属性的文件一起的 XML 文件中。
那么它存储在哪里呢?答案是:这确实要看情况,你真的不必担心,也不应该担心。因为,正如我所说,这是一个实现细节,就编程而言,担心实现细节意味着绕过 API。
在 API 级别处理属性时,您也不必担心属性存储在哪里。请参阅IShellItem2和IPropertyStoreCOM 接口以获取入口点。
在底层,Windows Vista 和更高版本提供了了解文件类型以及如何读写其属性的属性处理程序。您可以编写自己的属性处理程序(使用 COM)并将其添加到资源管理器(作为所谓的shell 扩展)。
我发现的最有用的文档是Ben Karas 在 2006 年 8 月 Vista 发布前后的博客文章。他完成了关于财产系统的整个系列。这是一个非常有用的教程,对于我使用 Windows 7 来说,它的效果 100%。
不要按照本页另一个回复中给出的建议来阅读有关COM 结构化存储的信息。这仅适用于特定文件类型。用本·卡拉斯的话来说:
问题:很多人错误地调用了
StgOpenStorageEx. 不要那样做!StgOpenStorageEx仅支持特定格式,例如 OLE 复合文档或 NTFS 辅助流存储。StgOpenStorageEx不知道如何从.JPG图像中读取 EXIF 标头。
| 归档时间: |
|
| 查看次数: |
4135 次 |
| 最近记录: |