C# 有人能解释一下这个Windows操作系统版本编号的例子吗?

C# 有人能解释一下这个Windows操作系统版本编号的例子吗?,c#,windows,operating-system,C#,Windows,Operating System,今天,我在玩一些代码时偶然发现了这个奇怪的现象,根据运行的Windows操作系统的不同,这些代码可以在应用程序中运行不同的路径。以下代码: OperatingSystem os = Environment.OSVersion; Version v = os.Version; string osv = v.ToString(); Console.WriteLine("Revision=" + v.Revision.ToString()); Console.WriteLine("MinorRevis

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

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
Revision=131072
MinorRevision=0
Minor=2
Major=5
MajorRevision=2
5.2.3790.131072
在我们的一台Win2003 SP2服务器上,它显示:

Revision=196608
MinorRevision=0
Minor=1
Major=5
MajorRevision=3
5.1.2600.196608
Revision=131072
MinorRevision=0
Minor=2
Major=5
MajorRevision=2
5.2.3790.131072
我对此有点惊讶,因为主要版本号表明XP和WindowsServer2003基本上是Windows的同一版本,只是有一点版本差异。我不完全清楚“重大威胁”一词的含义


我假设完整版本号中的第三项是内部版本号,但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
事实上,WindowsServer2003在内核级别上与WindowsXP非常相似,不过显然,内核之上的层有很多不同。Windows Server 2008内核实际上与Windows Vista SP1内核相同,这就是为什么Server 2008的第一个service pack被称为SP2的原因。Windows 7和Server 2008 R2不仅使用相同的内核,而且您甚至可以使用相同的service pack将它们升级到SP1


XP和2003 server基本上来自同一个世界,次要版本(在您的例子中,2或1)是两者之间的识别因素。

这是相当准确的。使Windows内核运行正常的核心代码在XP和Windows 2003之间是相同的。这也是后来发生的,Vista和Windows 2008共享同一个内核。Win7和Windows 2008 R2。

有什么问题?大多数源代码(内核、外壳等)在Windows操作系统的客户端和服务器版本之间共享,主要区别在于附加软件(如AD server&co)和对系统组件的调整(如较长的调度程序量程)

Windows2003Server主要基于XP代码库,还有一年的开发时间(XP诞生于2002年);这是典型的Windows服务器发布计划(它所基于的客户端操作系统发布后1年)

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

MajorRevision获取修订号的高16位。 MinorRevision获取修订号的低16位


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

我相信主要版本指的是service pack的价值


有很多信息,尽管名称似乎有点不同。

没有那么多。Xp和2003是完全不同的。Xp 64和2003的代码库是一样的。@David-我不是这么听说的。XP 64在Windows 2003两年后发布。也许你指的是2003年的x64版本?我听说在W2k和客户端成为XP之后,客户端和服务器版本分裂,然后是XP SP2和可信计算等等。服务器变成了2003年,然后是XP x64(你会注意到它有5.2版)。然后,为Vista/Server 2008重新整合代码库是魔鬼自己的工作。实际上,没有人说它有什么问题。你可能误解了这个问题吗?:-)@网络药剂师:
s/错误/奇怪/
;也许我误解了这个问题,我想重点是WinXP和Win2K3服务器之间的微小变化让您感到惊讶。