我偶然发现了一些关于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?
答案 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来改变程序的行为。