windows - PE 文件中的 OSMajor 和 OSMinor 版本号

标签 windows version portable-executable

最近我偶然发现了一个奇怪的现象。

我正在为 PE 文件构建一个转储程序,很好地阅读了节标题和“可选”节标题。现在,当我到达“主要操作系统”和“次要操作系统”字段时,我注意到一个奇怪的值。

[WORD] OS VERSION major        :0x00000006
[WORD] OS VERSION minor        :0x00000000

显然这意味着 Windows Vista...

这里:https://learn.microsoft.com/de-de/windows/win32/sysinfo/operating-system-version?redirectedfrom=MSDN

我编写了一个简单的 hello-world 32 位可执行文件,并使用 7zip.exe 进行了测试(由于某种原因,它是 4.0 [==Win98])。

现在我很困惑......我新编写的PE文件(Visual Studio 2019)怎么可能不是操作系统版本10??? 微软是否可能因为懒惰而没有正确更新他们的链接器???

在该页面上它说了一些关于 list 文件的内容,但只是说如果你没有 list 你的可执行文件它会告诉你Windows 8.0(但是我应该这样做,对于这个问题来说并不重要) .

问题:有没有办法从二进制文件中读取正确的操作系统版本?

最佳答案

事实证明,这个数字更像是一个 “所需的最低操作系统”

这可以解释为什么它是 Windows Vista。

关于windows - PE 文件中的 OSMajor 和 OSMinor 版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59429670/

相关文章:

c# - 如何使 c#.net 应用程序可移植

java - Windows 上的慢套接字接收大量小消息

c++ - Qt 和静态库文件——如何编译

perl - 如何在 Unix 上通过命令行查找 Perl 模块版本号?

date - 如何将与安装相关的计算字符串添加到 InnoSetup 脚本?

c++ - PE 文件中的跳转 stub

.NET WinForms 自定义控件 : how to get a reference to the containing form

python - 将 lxml 安装到 virtualenv

ios - iOS 5.1 和 6.1 的 UIButton 区别

windows - 计算PE文件中入口点的文件偏移量