15

我通过检查以下注册表项来检查安装程序(使用 NSIS 制作)中的 Windows 版本:

HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion"

根据这篇文章和MSDN 的这个页面,Windows 10 的当前版本号应该是 10.0。

我刚刚安装了 Windows 10 Pro Insider Preview,注册表中给出的版本号仍然是 6.3,而不是应该的 10.10。

注册表中是否有另一种可靠的方法来检测 Windows 10?

4

4 回答 4

17

而不是读取 value CurrentVersion,而是读取 Windows 10 下的新值CurrentMajorVersionNumber(即 10)和CurrentMinorVersionNumber(即 0)。这两个键是 Windows 10 中的新键,用于从 Registry 检测 Windows 版本

于 2015-06-30T16:00:14.963 回答
3

注册表中还有一个人类可读的字符串,名为“ProductName”

using Microsoft.Win32;
private string getOSInfo()
{
   string registry_key = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion";
   var key = Registry.LocalMachine.OpenSubKey(registry_key);
   var value = key.GetValue("ProductName");
   return value.ToString();
}
于 2017-07-25T09:27:21.167 回答
2

尝试

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ReleaseId

这给了我 10 和 1709。

于 2017-11-13T18:13:08.910 回答
1

请参阅 Peter Bright 在https://arstechnica.com/information-technology/2014/11/why-windows-10-isnt-version-6-any-more-and-why-it-will-probably-work/上的文章更深入地了解您为什么看到您所做的答案。正如您在@magicandre1981 中看到的那样,CurrentMajorVersionNumber密钥将为您提供所需的“10”。System.Environment.OSVersion 如果应用程序清单明确指定您的应用程序适用于 Windows 10,您可以获得 10.0 ,如参考文章中所述。没有它,Environment.OSVersion将为您提供 6.2.9200,与 Windows 8 相同。因此,您的 Windows 10 版本是 10.0、6.3 或 6.2,具体取决于您提出问题的方式。

于 2018-01-16T19:37:54.587 回答