PE 文件中的 OSMajor 和 OSMinor 版本号
OSMajor and OSMinor version numbers in PE file
最近我偶然发现了一个奇怪的现象。
我正在为 PE-files 构建一个自卸车,阅读 header 部分和 "optional" 部分 header 非常好。现在,当我到达字段 "OS major" 和 "OS minor" 时,我注意到一个奇怪的值。
[WORD] OS VERSION major :0x00000006
[WORD] OS VERSION minor :0x00000000
显然这意味着 Windows Vista....
此处:https://docs.microsoft.com/de-de/windows/win32/sysinfo/operating-system-version?redirectedfrom=MSDN
我写了一个简单的 hello-world 32 位可执行文件,还用 7zip.exe 进行了测试(出于某种原因,它是 4.0 [==Win98])。
现在我很困惑....我刚写的PE-file(Visual Studio 2019)怎么可能不是OS版本10???
微软是不是因为懒惰,没有正确更新他们的链接器???
在那个页面上它说了一些关于清单文件的事情,但只有它会告诉你 Windows 8.0 如果你不清单你的可执行文件(但是我应该这样做,实际上不是这个问题很重要)。
问题:有没有办法从二进制文件中读取正确的OS-version?
事实证明,这个数字似乎更像是一个
"Required Minimum Opreating system",
这可以解释为什么它是 windows Vista。
最近我偶然发现了一个奇怪的现象。
我正在为 PE-files 构建一个自卸车,阅读 header 部分和 "optional" 部分 header 非常好。现在,当我到达字段 "OS major" 和 "OS minor" 时,我注意到一个奇怪的值。
[WORD] OS VERSION major :0x00000006
[WORD] OS VERSION minor :0x00000000
显然这意味着 Windows Vista....
此处:https://docs.microsoft.com/de-de/windows/win32/sysinfo/operating-system-version?redirectedfrom=MSDN
我写了一个简单的 hello-world 32 位可执行文件,还用 7zip.exe 进行了测试(出于某种原因,它是 4.0 [==Win98])。
现在我很困惑....我刚写的PE-file(Visual Studio 2019)怎么可能不是OS版本10??? 微软是不是因为懒惰,没有正确更新他们的链接器???
在那个页面上它说了一些关于清单文件的事情,但只有它会告诉你 Windows 8.0 如果你不清单你的可执行文件(但是我应该这样做,实际上不是这个问题很重要)。
问题:有没有办法从二进制文件中读取正确的OS-version?
事实证明,这个数字似乎更像是一个 "Required Minimum Opreating system",
这可以解释为什么它是 windows Vista。