如何通过Win API调用或(更好)读取注册表值来读取windows构建版本

如何通过Win API调用或(更好)读取注册表值来读取windows构建版本,windows,installation,wise,windowsversion,Windows,Installation,Wise,Windowsversion,我们安装的系统偶尔会检测到错误版本的Windows。(它通过内置的Wise安装程序功能检测版本,以检测系统信息,但没有说明它是如何做到这一点的) 因此,我正在寻找另一种检测Windows版本的方法。Wise安装程序调用Windows API函数的能力非常有限,因此从注册表或特定文件读取将更容易(当然,我必须将文件版本映射到Windows版本) 我发现了这个讨论线索: 但它没有被引用。因此,我不确定它有多可靠。我知道您不希望使用API,但如果您不相信Wise提供的信息,那么这可能是确保以下信息的唯

我们安装的系统偶尔会检测到错误版本的Windows。(它通过内置的Wise安装程序功能检测版本,以检测系统信息,但没有说明它是如何做到这一点的)

因此,我正在寻找另一种检测Windows版本的方法。Wise安装程序调用Windows API函数的能力非常有限,因此从注册表或特定文件读取将更容易(当然,我必须将文件版本映射到Windows版本)

我发现了这个讨论线索:
但它没有被引用。因此,我不确定它有多可靠。

我知道您不希望使用API,但如果您不相信Wise提供的信息,那么这可能是确保以下信息的唯一方法:

GetVersionEx()


“链接到”页面上有示例代码(以及许多关于可能更接近您实际需要的备用函数的注释)。

如果您想要注册表解决方案,可以查看以下项:HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,并检查ProductVersion、CurrentVersion和,CurrentBuild.

这很可能是故意的,Windows使用appcompat垫片。这只会让你再次阅读相同的版本。Ping供应商以获得关于此.MSI包或专有格式的支持?它使用专有的Wise.exe格式(不是MSI)看到这个问题,它可能有答案(Cameron Tinker提供的答案看起来可能有用):好主意,但当我在“Windows兼容模式(适用于XP sp3)”下运行.exe时,它报告了Windows XP(在Win 7机器上)兼容性模式将覆盖任何底层OS的报告。如果你降到了像C++这样的低级语言,你似乎可以得到这个版本。如果你在兼容模式下运行这个应用程序(XP),那么这将不会报告真正的(安装的)OW/S版本。在Win 7机器上。来自Microsoft:“如果兼容模式生效,GetVersionEx函数会报告其标识的操作系统,该操作系统可能不是已安装的操作系统。例如,如果兼容模式有效,则GetVersionEx会报告为应用程序兼容性选择的操作系统。“是的,但它会报告windows选择告诉您的版本,以便让您做您无论如何都应该做的事情:)尝试排除兼容性模式通常只有在您尝试破坏应用程序时才有用。