为什么Vista上的Java报告它是在XP上?

时间:2008-11-07 22:47:19

标签: java windows-vista

我偶然发现了一些关于System.getProperty("os.name")的令人费解的事情。根据{{​​3}}和a Java bug on the matter(搜索“os.name”),Java中早期的“longhorn”版本的Vista中存在一个错误,应该在v5版本10中修复。

然而,在我的Vista SP1盒子上 - 使用v5版本15和v6版本6 - System.getProperty("os.name")返回“Windows XP”。进一步System.getProperty("os.version")返回“5.1”。但是,我无法通过Google找到与此问题相关的任何内容。这让我想知道我的Vista设置是否有些奇怪。我尝试从测试C程序调用GetVersionEx()API函数,它返回主要版本6,次要0(正如我期望的Vista安装)。

是否有其他人遇到此问题,知道修复或有任何建议我如何解决它而不使用JNI?

2 个答案:

答案 0 :(得分:10)

可能是Java在XP兼容模式下运行。在这种情况下,Vista将伪造Windows版本号,使Java相信它在XP上运行。检查可执行文件的兼容性选项卡。

答案 1 :(得分:0)

Windows 2000的实际Windows版本号为5.0。 Windows XP是5.1。 Vista应该是6.0,所以你的测试程序运行正常。听起来像Java肯定是错了。

您可能不得不依靠JNI来获得正确的答案。我假设您已经问过自己为什么可能需要根据您使用的是XP还是Vista来改变程序的行为。