【发布时间】:2021-12-09 18:39:26
【问题描述】:
我正在尝试获取 cmd 命令“winver”中显示的版本号,在我的例子中是 20H2。我如何用代码得到它?我没有找到涉及此主题的帖子。
【问题讨论】:
-
我认为副本不会打印
20H2
我正在尝试获取 cmd 命令“winver”中显示的版本号,在我的例子中是 20H2。我如何用代码得到它?我没有找到涉及此主题的帖子。
【问题讨论】:
20H2
恕我直言,您维护了内部版本号及其字符串的映射,例如
#include <iostream>
#include <map>
int main() {
std::map<int,std::string> builds = {{19042, "20H2"}, {19043, "21H1"}};
std::cout << builds.at(19042) << std::endl;
return 0;
}
您将获得带有GetVersion() 或GetVersionEx() 的内部版本号。有关列表,请参阅Wikipedia。请注意,内部版本号可能会受到兼容性设置的影响,即 Windows 可能会欺骗您。
恕我直言,Microsoft 建议使用 GetFileVersionInfo() 检查系统 DLL 的版本,例如 kernel32.dll,以获得真实版本。
如果您不喜欢其中任何一个,从注册表中获取名称可能是您正在寻找的选项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DisplayVersion
【讨论】:
winver 表示 21H1,但我机器上的 kernel32.dll 和 ntdll.dll 是 19041。我现在有点担心。