如何获得Windows版本 - 如"Windows 10,版本1607"?

Joe*_*tty 12 c# windows

看来,引用Windows的"版本"一词用于不同的事情.例如,在Windows 10"周年更新"是由微软(标记为"1607版" 这里的例子).但是,如果我尝试使用以下代码获取"版本"(在安装了周年纪念更新的PC上),则不会返回任何看起来像"1607"的内容.

// Get Version details
Version ver = os.Version;
Console.WriteLine("Major version: " + ver.Major);
Console.WriteLine("Major Revision: " + ver.MajorRevision);
Console.WriteLine("Minor version: " + ver.Minor);
Console.WriteLine("Minor Revision: " + ver.MinorRevision);
Console.WriteLine("Build: " + ver.Build);
Run Code Online (Sandbox Code Playgroud)

我明白了:

Major version: 6
Major Revision: 0
Minor version: 2
Minor Revision: 0
Build: 9200
Run Code Online (Sandbox Code Playgroud)

如何获得"版本1607"中的Windows 10"版本"?

谢谢!

Sta*_*avm 27

根据MSDN官方链接,每个Windows版本都有一个特定的版本号.在dot net中,可以使用Environment.OSVersion对象读取.

Console.WriteLine("OSVersion: {0}", Environment.OSVersion);
//output: OSVersion: Microsoft Windows NT 6.2.9200.0
Run Code Online (Sandbox Code Playgroud)

您正在寻找的是ReleaseID而不是Windows版本.这可以从注册表项中读取:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ReleaseId

using Microsoft.Win32;

string releaseId = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId", "").ToString();
Console.WriteLine(releaseId);
Run Code Online (Sandbox Code Playgroud)

  • 优秀!已经验证可以在我的电脑上使用"Windows 10 1511版本"和另一台带有"版本1607"的电脑 - 这是预期的. (2认同)
  • @Stavm - 很棒的信息.BTW,Microsoft**确实**将_ReleaseId_(例如,"1803")称为版本,请参阅[Windows 10发布信息](https://www.microsoft.com/en-us/itpro/windows-10/release-information)了解详情. (2认同)
  • 这不再有效。微软打破了 21 点的releaseid。您必须使用 diplayversion 来代替 21h1,这也可能会在将来崩溃并且不适用于较旧的操作系统。 (2认同)

小智 5

string Version = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "ProductName", null);
Run Code Online (Sandbox Code Playgroud)

命名为“Windows 10 Enterprise”。