搞定Windows的版本号

我们有一个用InstallShield制作的安装器, 在vista,Windows7上表现的不好, 存在一些问题.

也因此,我们的客户希望我么做一个"支持的操作系统的判断".

具体到windows这里就是: win2000,xp,WinServer2003这三个版本正常安装, 其他的windows版本则可能存在问题.

 

Java的System.getProperties() 方法的javadoc上有一个列表,列出了他支持对哪些系统属性的查询.

其中比较有用的是下面这三个.

 

System.out.println("OS name:    " + System.getProperty("os.name"));
System.out.println("OS arch:    " + System.getProperty("os.arch"));
System.out.println("OS version: " + System.getProperty("os.version"));
 

剩下的工作就是解析这些返回值,分别对应什么操作系统了.

 

msdn上面有这样一个链接:Operating System Version 上面的内容是这样的:

 

Operating system Version number
Windows 7 6.1
Windows Server 2008 R2 6.1
Windows Server 2008 6.0
Windows Vista 6.0
Windows Server 2003 R2 5.2
Windows Server 2003 5.2
Windows XP 5.1
Windows 2000 5.0

 

 

如果msdn里面写的东西, 100%正确的话, 那么问题到这里也就结束了,

可问题偏偏不是这样......

 

下面这两个链接是wikipedia上面关于windows的链接:

Microsoft_Windows

Timeline_of_Microsoft_Windows

 

里面就有一个例外, 64bit的XP的version number是5.2, 跟2003的一样,

wikipedia上面关于这一点的原因是:

Windows_XP_Professional_x64_Edition是在win2003之后开发的, 他使用的codebase是2003的.

也因此, 在使用前述的java代码获得它的os.name时, 得到的也是2003, 而非64位的bit.

不过还好, 我们的代码是对2003与xp一视同仁的, 不用具体区分.

 

 

从这一现象可以看出, 微软认为这个事, 不是一个事关紧要的问题.......

 

 

另外:

C#里面可以写下面的代码,他得到的信息比java丰富, 有service pack等信息.

 

OperatingSystem os = Environment.OSVersion;
// Display the value of OperatingSystem.VersionString. By default, this is
// the same value as OperatingSystem.ToString.
Console.WriteLine("This operating system is {0}", os.VersionString);
 

同时C#里面也有类:System.Version

对他可以直接应用lessThan(), greaterThan()方法.

你可能感兴趣的:(windows,Microsoft,dos,XP,OS)