【发布时间】:2010-05-05 14:19:48
【问题描述】:
在这篇文章 (http://blogs.msdn.com/oldnewthing/archive/2006/12/21/1340571.aspx) 之后的 C 中,我们已经成功地从 windows 文件中获取文件版本信息,但是有些文件似乎有不同的机制来存储版本信息,但没有解决在文章中,想知道是否有人在这里有任何想法。
文件的一个示例是 system32/oledlg.dll。逐字节遍历文件,我们来到了一个应该存储版本信息的块:
F^@i^@l^@e^@V^@e^@r^@s^@i^@o^@n^@^@^@^@^1.0 (x^@p^@s^@p^@.^@0^@8^@0^@4^@1^@3
^@-^@2^@1^@0^@8^@)^@^@^@^@^@.^@^G^@^A^@I^@n^@t^@e^@r^@n^@a^@l^@N^@a^@m^@e
我们可以看到是 1.0。但是,当您在 windows 中查看文件信息时,版本实际上是 5.1.2600.5512。本文中的方法适用于大多数文件,但我遇到了一些遇到上述问题的实例。有人对此有经验吗?我只能访问标准 C。
根据评论中发布的后续文章,这是否意味着无法从文件信息块损坏的文件中获取实际文件版本?
我还应该补充一点,我正在从 windows 框中获取文件,然后在 linux 上使用 C 程序检查它们以获取文件信息。
【问题讨论】:
-
您是否考虑到第一篇文章末尾提到的后续文章blogs.msdn.com/oldnewthing/archive/2006/12/22/1348663.aspx 中的信息?
-
我错过了,谢谢,我会看看我能用它做什么。
标签: c file filesystems