繁体   English   中英

从注册表获取Windows版本的可靠方法

[英]Reliable way to get Windows Version from registry

我正在通过检查以下注册表项来检查安装程序(由NSIS制造)中的Windows版本:

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

根据MSDN上的这篇文章本页 ,Windows 10的currentVersion号应为10.0。

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

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

在Windows 10下,而不是读取值CurrentVersion ,而是读取新值CurrentMajorVersionNumber (它是10)和CurrentMinorVersionNumber (它是0)。这两个键是Windows 10中的新功能,可以从Registry中检测Windows版本

注册表中还有一个易于理解的字符串,称为“ 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();
}

尝试

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

这给了我10和1709。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM