VerQueryValue Fileversion与Windows Shell不匹配

时间:2009-01-22 14:33:24

标签: winapi dll versioninfo

我正在使用VerQueryValue从DLL的VersionInfo中检索字符串。

一切正常,但资源管理器显示的FileVersion(右键单击文件,属性,详细信息,“文件版本”)与我从VerQueryValue获取的字符串不匹配。

我对VerQueryValue的所有其他调用工作正常,但FileVersion似乎检索与ProductVersion相同的数据。我尝试过用不同语言(C ++和Delphi)编写的两个不同的“版本信息”组件,两者都表现出这种行为,所以我不认为这是我(或他们的)代码中的错误。

我能想到的两种可能性:

  • VerQueryValue中的错误
  • 或者,Windows shell实际上显示的不是FileVersion字符串。

有人知道它可能是哪一个吗?

2 个答案:

答案 0 :(得分:1)

VerQueryValue的lpSubBlock参数(第二个参数)是否设置为您所在语言环境的正确值?对于英语 - 英国,这将是:

StringFileInfo\080904E4\FileVersion

This page还有一些语言/字符集标识符。

答案 1 :(得分:-1)

阅读本文 KB160042,我想你会找到答案。