Обнаружение операционной системы с помощью Java или JavaScript - PullRequest
1 голос
/ 11 ноября 2010

Мне нужно определить имя и версию ОС на Java.Это я могу сделать

String os_name = System.getProperty("os.name", "");
String os_version = System.getProperty("os.version", "");

, но проблема в том, что это ненадежно.Иногда он возвращает неверную информацию, и я не могу обнаружить все операционные системы, кроме самых популярных Windows, MacOS, Linux и т. Д., И это даже дает неверную информацию в случае 64-битных операционных систем.Мне нужно обнаружить любую ОС с любой спецификацией.Я не могу найти правильное решение для этого.

Может быть, я могу сделать это с помощью JavaScript?Если это невозможно в Java, то, пожалуйста, скажите мне, как это сделать с помощью JavaScript.

Любые предложения или предложения высоко ценятся.

Заранее спасибо.

С уважением,

** Ниланджан Чакраборти

Ответы [ 3 ]

8 голосов
/ 11 ноября 2010

В Java есть некоторые распространенные ошибки при угадывании операционной системы:

http://bugs.sun.com/view_bug.do?bug_id=6819886

Возможно, в более новых версиях Java они решены.

В JavascriptВы можете использовать navigator.appVersion:

// This script sets OSName variable as follows:
// "Windows"    for all versions of Windows
// "MacOS"      for all versions of Macintosh OS
// "Linux"      for all versions of Linux
// "UNIX"       for all other UNIX flavors 
// "Unknown OS" indicates failure to detect the OS

var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

document.write('Your OS: '+OSName);
3 голосов
/ 11 ноября 2010

Все браузеры, с которыми я знаком, сообщают об ОС из объекта навигатора (javascript) -

alert(navigator.platform)//returns string- eg'Win64'
0 голосов
/ 11 ноября 2010

Существует не так уж много способов обнаружить это.Скорее всего, он будет работать правильно в 99% случаев.

Однако, если вы ищете другой метод, вы можете проверить некоторые пути к магическим файлам.то есть:

  • , если существуют папки /etc или /proc, это Linux
  • , если существует C:\Windows\, это Windows.
  • и т. д.

Однако они не будут снова надежными, поскольку / etc / proc может также существовать в Mac.

Если вы хотите найти точное название ОС, вы можете посмотреть на /etc/issue файл в Unix-Linux-Mac, и вы можете использовать "os.name" (который, как вы утверждаете, он неточный) или WMI (инструмент управления окнами), чтобы получить имя ОС + версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...