今天我偶然发现了这个奇怪的现象,在玩一些代码的时候,根据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内核的版本号。
实际上,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是指服务包的价值。
这里有很多信息,虽然命名似乎有点不同。