我有一些经过合理尝试和测试的代码,它们使用 Windows API 调用来读取 FileVersionInfo 字符串,例如“FileVersion”和“CompanyName”。
我发现它因一个特定的第 3 方 DLL 而失败。问题似乎是这样的:
读取\VarFileInfo\Translation
值,我得到040904B0
(美国英语,Unicode)。但是当我尝试调用VerQueryValue
on 时\StringFileInfo\040904B0\CompanyName
,它返回 false。
但是调整代码以使用 Windows Latin-1 ANSI 代码页有效:\StringFileInfo\040904E4\CompanyName
.
因此,字符串表中的代码页与该值不匹配\VarFileInfo\Translation
。
根据 MSDN 的VERSIONINFO 资源文档底部的示例资源,这是一个合适的做法!
鉴于此,我可以使用已发布的 VersionInfo API 来正确读取此文件的字符串,而无需“猜测”代码页吗?