搞定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 systemVersion number
Windows 76.1
Windows Server 2008 R26.1
Windows Server 20086.0
Windows Vista6.0
Windows Server 2003 R25.2
Windows Server 20035.2
Windows XP5.1
Windows 20005.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()方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值