繁体   English   中英

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

[英]Why is Java on a Vista box reporting it is on XP?

我偶然发现了一些关于System.getProperty("os.name")令人费解的事情。 根据关于此事的Java漏洞Java 5发行说明 (搜索“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?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM