有人可以解释这个Windows操作系统版本编号的例子吗?

今天我偶然发现了这个奇怪的现象,在玩一些代码的时候,根据Windows操作系统的运行情况,在应用程序中使用不同的path。 以下代码:

OperatingSystem os = Environment.OSVersion; Version v = os.Version; string osv = v.ToString(); Console.WriteLine("Revision=" + v.Revision.ToString()); Console.WriteLine("MinorRevision=" + v.MinorRevision.ToString()); Console.WriteLine("Minor=" + v.Minor.ToString()); Console.WriteLine("Major=" + v.Major.ToString()); Console.WriteLine("MajorRevision=" + v.MajorRevision.ToString()); Console.WriteLine(osv); 

在我的XP SP3工作站上面的代码显示:

 Revision=196608 MinorRevision=0 Minor=1 Major=5 MajorRevision=3 5.1.2600.196608 

在我们的Win2003 SP2服务器上显示:

 Revision=131072 MinorRevision=0 Minor=2 Major=5 MajorRevision=2 5.2.3790.131072 

我有点惊讶,因为主要版本号码表明,XP和Windows Server 2003基本上是相同版本的Windows,只是一个小的版本差异。 不完全确定“MajorRevision”是什么意思。

我假设完整版本号中的第三项是内部版本号,但在这两种情况下,v.Build实际上都返回空白。

这是Windows NT内核的版本号。

  • 5.0:Windows 2000
  • 5.1:Windows XP
  • 5.2:Windows server 2003
  • 6.0:Windows Vista,Windows server 2008
  • 6.1:Windows 7,Windows server 2008 R2

实际上,Windows server 2003在内核级别上与Windows XP非常相似,不过在内核之上的层级有很多不同之处。 Windows server 2008内核实际上与Windows Vista SP1内核相同,这就是为什么server 2008的第一个服务包称为SP2。 而Windows 7和server 2008 R2不仅使用相同的内核,甚至可以使用相同的Service Pack将它们都升级到SP1。

Windows版本号的来源。

http://msdn.microsoft.com/en-us/library/ms724832(v=vs.85).aspx

XP和2003服务器基本上来自同一个世界,小版本(在你的情况下,2或1)是两者之间的识别因素。

这非常准确。 使Windows内核打勾的核心代码在XP和Windows 2003之间是相同的。这也发生在后面,Vista和Windows 2008共享相同的内核。 和Win7和Windows 2008 R2。

它出什么问题了? 大多数源代码(内核,外壳等)在Windows操作系统的客户端版本和服务器版本之间共享,主要区别在于附加软件(例如AD服务器和公司)以及对系统组件(例如更长的调度器量子)的调整。

Windows 2003服务器主要基于XP代码库,一年多的开发(XP诞生于2002年); 这是典型的Windows服务器发布计划(基于客户端操作系统的一年)。

琐事:你可能会注意到IA64版本的Windows XP也是5.2,因为它是基于2003服务器的代码库(因为这是他们开始使用IA64时的“最先进的Windows”)。

来自MSDN

MajorRevision获取版本号的高16位。 MinorRevision获取版本号的低16位。

第三个数字实际上是Version.Build。 它不能是空白的,这是一个数字。

我相信MajorRevision是指服务包的价值。

这里有很多信息,虽然命名似乎有点不同。