当前位置: 首页 > 面试题库 >

通过Java或JavaScript进行操作系统检测

孔砚
2023-03-14
问题内容

我需要检测Java中的操作系统名称和版本。我可以做到的

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

但是问题在于这是不可靠的。有时它返回错误的信息,并且我无法检测到所有操作系统,除了最流行的Windows,MacOS,Linux等,在64位操作系统的情况下,甚至会提供错误的信息。我需要检测具有任何规格的任何操作系统。我无法为此找到合适的解决方案。

也许我可以用JavaScript做到这一点?如果在Java中是不可能的,请告诉我如何使用JavaScript。

任何意见或建议,高度赞赏。

提前致谢。

最好的祝福,

**尼兰詹·查克拉博蒂(Nilanjan Chakraborty)


问题答案:

在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);


 类似资料:
  • 问题内容: 我已经做了一些研究,但这个问题已经提出,但不是我打算的那样。我正在为QR登陆的客户端构建页面,这是一个下载应用程序的地方。因此,他不必在页面上打印2个QR码,我想检测当前的操作系统(Apple / Android / Other [不支持])并根据该值修改我的元素。 我已经看过脚本“ detectmobilebrowsers”,它的目的只是告诉用户是否完全可以移动,而我想弄清楚用户正在

  • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成

  • 更多面试题总结请看:【面试题】技术面试题汇总 进程间的通信方式 信号 管道 信号量 共享内存 消息队列 套接字 对比: 方式 传输的信息量 使用场景 关键词 信号 少量 任何 硬件来源、软件来源 / 信号队列 管道 大量 亲缘进程间 单向流动 / 内核缓冲区 / 循环队列 / 没有格式的字节流 / 操作系统负责同步 命名管道 大量 任何 磁盘文件 / 访问权限 / 无数据块 / 内核缓冲区 / 操

  • sed sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的

  • 操作系统启动过程 当bootloader通过读取硬盘扇区把ucore在系统加载到内存后,就转跳到ucore操作系统在内存中的入口位置(kern/init.c中的kern_init函数的起始地址),这样ucore就接管了整个控制权。当前的ucore功能很简单,只完成基本的内存管理和外设中断管理。ucore主要完成的工作包括: 初始化终端; 显示字符串; 显示堆栈中的多层函数调用关系; 切换到保护模式

  • 进程与线程 对于有线程系统: 进程是资源分配的独立单位 线程是资源调度的独立单位 对于无线程系统: 进程是资源调度、分配的独立单位 进程之间的通信方式以及优缺点 管道(PIPE) 有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信 优点:可以实现任意关系的进程间的通信 缺点: 长期存于系统中,使用不当容易出错 缓冲区有限 无名管道:一种半双工的通信方式,只能在具有亲缘关系的进程间使用(父