【问题标题】:Last Build number in OSVERSIONINFOEXOSVERSIONINFOEX 中的最后一个内部版本号
【发布时间】:2015-10-10 04:27:15
【问题描述】:

我想获取操作系统产品版本为 6.3.9600.17415 使用 OSVERSIONINFOEX 时,我成功获得 6.3.9600

如何获取最后一个版本号 17415

【问题讨论】:

  • 您在哪里找到完整的版本号?我想 6300 是 Windows 的内部版本号?
  • 是否知道 GetVersionEx 已被强烈弃用并返回错误信息,除非您明确支持正在执行的操作系统版本?
  • 如果它被折旧,使用哪个函数而不是 GetVersionEx。我的产品适用于 Windows 8 及更高版本。
  • 你可以使用RtlGetVersion()

标签: c++ delphi winapi freepascal


【解决方案1】:

如果您确实需要确切的内部版本号,请在 kernel32.dll 上使用 GetFileVersionInfo。这篇文章解释了使用 GetFileVersionInfo:

https://stackoverflow.com/a/17286050/2501336

这是获取真实操作系统内部版本号的记录方法,不受虚拟化影响:

Getting the System Version

要获取操作系统的完整版本号,请在其中一个系统DLL上调用GetFileVersionInfo函数,例如Kernel32.dll,然后调用VerQueryValue获取文件版本信息的\\StringFileInfo\\<lang><codepage>\\ProductVersion子块.

【讨论】:

  • 您建议如何从随机可执行映像的文件版本中可靠地获取OS版本号?
  • 我不建议从随机可执行文件中获取操作系统版本。我建议从 kernel32.dll 获取它。这是一个系统 DLL,这是获取操作系统内部版本号的官方记录方式:msdn.microsoft.com/en-us/library/windows/desktop/…(编辑我的答案以包含此信息)
  • 这只是获得“真正”操作系统版本而无需担心清单虚拟化的几种方法之一。其他不受表现形式影响的解决方案包括RtlGetVersion()NetServerGetInfo()NetWkstaGetInfo()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
相关资源
最近更新 更多