首页 > 解决方案 > 在 VS_FIXEDFILEINFO 中获取错误的文件版本

问题描述

看起来我已经花了足够的时间试图解决这个问题来询问社区。

我需要一种可靠的方法来确定文件的版本并尝试为此使用GetFileVersionInfoSize+ GetFileVersionInfo。特别是,我使用dwFileVersionMSand dwFileVersionLSin VS_FIXEDFILEINFO。with 确实适用于我硬盘驱动器上的几乎所有文件,除了ucrtbase.dll位于c:\windows\system32c:\windows\syswow64文件夹中的 . MSDN 声明这部分文件版本没有被重定向,但我得到了不同的行为。也就是说,资源管理器显示“10.0.18362.387”,但上述 WinAPI 函数的结构中的字段返回“6.2.18362.387”。注意,两者都不是本地化字符串,而是来自 VS_FIXEDFILEINFO 的二进制值。当我使用任何二进制编辑器打开 DLL 并搜索文件版本时,我发现它是正确的 - 0x00 0x00 0x0A 0x00 0x83 0x01 0xBA 0x47.

谁能向我解释我在这里缺少什么?

标签: windowsfileversion

解决方案


推荐阅读