如何读取Windows .exe文件的版本?

4
我需要从Windows exe和msi文件中解析文件版本和产品版本。你能指向文件规范或库吗?最好用Java实现。
更新:看来我不能使用winapi,因为代码需要在Linux上运行...
2个回答

1

你可以使用GetFileVersionInfoSizeGetFileVersionInfo函数来获取文件版本和产品版本。虽然我不是Java的专家,但据我所知,可以使用WinAPI函数来实现。


0

我有一个Delphi程序,可以分析Windows EXE文件中的PE/NE头 - 但不是在这里。我认为它可以很容易地移植到Java上,因为它对文件进行了二进制分析。

当然,在Windows上使用JNA调用Windows API也可以解决问题。

编辑:我找到了它,但有一些小问题:

  • 该程序最初的目的是从EXE(PE/NE)文件中提取资源,因为当时可用的资源编辑器只能使用PE格式(NE由Win3.1使用)
  • UI不显示版本信息,但记录结构存在于其中
  • UI完全使用匈牙利语,如果需要,我可以提供翻译
  • 一些代码注释是用匈牙利语编写的,除了一些记录结构描述是用英语编写的
  • 我不知道它是否能够自己编译或者今天是否还能够编译。
  • ZIP包括一个已编译的Win32 RESXPLOR.EXE
  • 代码中有一些缓冲区溢出漏洞 - 在Java中应该很容易修复

你写的吗?如果是,你用了哪个规范?是的,从Delphi移植不会有问题。 - ya23
100%是自己编写的代码,但由于我在4年前转向了Java,旧代码不方便快速获取。我想它大约是在2001年开发的,我在各个网站上阅读了文件格式规范(wotsit.org等)。它不仅有分析器,还有可见树形GUI。我可以为您提供此代码,但需要大约10个小时。如果您将它移植到Java,请考虑将其开源化。 - akarnokd

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