Почему Java на Windows Vista сообщает, что на XP? - PullRequest
5 голосов
/ 08 ноября 2008

Я наткнулся на что-то действительно загадочное в отношении System.getProperty("os.name"). В соответствии с ошибкой Java по данному вопросу и примечаниями к выпуску Java 5 (поиск "os.name"), была ошибка в Java с ранними версиями Vista для Longhorn. это должно было быть исправлено в v5 версии 10.

Однако на моем Vista Vista SP1 - при использовании v5 версии 15 и v6 версии 6 - System.getProperty("os.name") возвращает «Windows XP». Далее System.getProperty("os.version") возвращает «5.1». Я не могу найти что-либо, касающееся этой проблемы через Google, хотя. Это заставляет меня задуматься, не странно ли это с моей установкой Vista. Я пытался вызвать функцию API GetVersionEx () из тестовой программы на C, и она возвращает основную версию 6, младшую 0 (как и следовало ожидать для установки Vista).

Кто-нибудь еще сталкивался с этой проблемой, знает исправление или есть какие-либо предложения о том, как можно обойти его без использования JNI?

Ответы [ 2 ]

10 голосов
/ 08 ноября 2008

Возможно, Java работает в режиме совместимости с XP. В этом случае Vista будет подделывать номер версии Windows, заставляя Java полагать, что она работает на XP. Проверьте вкладку совместимости исполняемого файла.

0 голосов
/ 08 ноября 2008

Фактический номер версии Windows 2000 для Windows был 5.0. Windows XP была 5.1. Vista предположительно 6.0, поэтому ваша тестовая программа работает правильно. Мне кажется, что Java определенно ошибается.

Возможно, вам придется положиться на JNI, чтобы получить правильный ответ. Я полагаю, что вы уже спросили себя, почему вам может потребоваться изменить поведение вашей программы в зависимости от того, используете ли вы XP или Vista.

...