¡Hola, Invitado!


Patrocinantes


Síguenos en Facebook


Síguenos en Twitter

Compartir este tema:
[Código] Detectar Sistema Operativo
-Gosw- Sin conexión
Administrador
*******

Mensajes: 1.984
Registro en: Jul 2010
Facebook Twitter YouTube
Gracias dados: 62
Gracias recibidos: 93
Mensaje: #1
Detectar Sistema Operativo
  • Compartir en Delicious
  • Compartir en Digg
  • Compartir en Linkedin
  • Compartir en MySpace
  • Compartir en Technorati
  • Compartir en Tuenti
Hola de nuevo, ahora les voy a mostrar la manera de averiguar en que sistema operativo esta corriendo nuestra aplicación Java, ¿Para que? Pues recordemos que java es un lenguaje "Multiplataforma" pero los sistemas operativos manejan ciertas cosas de manera distinta, como por ejemplo los archivos, los puertos, entre otros, por lo tanto lo ideal en algunos casos es detectar el sistema en el que corre la aplicación y así manejar cada cosa de distinta manera, según sea el caso.

La clase que usaremos para ello sera System, con su metodo getProperty() de la siguiente manera:

Lenguaje JAVA
String so = System.getProperty("os.name").toLowerCase();


Bien les explico, el método getProperty() nos devuelve un valor String, es por ello que creo una variable llamada so del tipo String para recibir el resultado. El parámetro de getProperty() que usamos es "os.name", con este pues pedimos el nombre del sistema operativo en el que nos encontremos y fíjense que seguido del método getProperty() va otro método llamado toLowerCase(), que tiene como función pasar todo el resultado a minúsculas, pues necesitamos esto para esta siguiente parte:

Lenguaje JAVA
if(so.indexOf("win") >= 0) {...}
if(so.indexOf("mac") >= 0) {...}
if(so.indexOf("nix") >=0 || so.indexOf("nux") >=0) {...}


Bien con cada una de estas condiciones evaluamos en que sistema operativo estamos y hacemos lo que necesitemos según cada resultado, el método indexOf() evalúa si la palabra que colocamos como su argumento se encuentra en la cadena os (que obtuvimos de getProperty("os.name")).

Bien les dejo una clase que implementa todo esto, espero les sea útil:

Lenguaje JAVA
public class DeterminarSO{
 
	public static boolean esWindows(){
 
		String so = System.getProperty("os.name").toLowerCase();
	    return (so.indexOf( "win" ) >= 0); 
 
	}
 
	public static boolean esMac(){
 
		String so = System.getProperty("os.name").toLowerCase();
	    return (so.indexOf( "mac" ) >= 0); 
 
	}
 
	public static boolean esUnix(){
 
		String so = System.getProperty("os.name").toLowerCase();
	    return (so.indexOf( "nix") >=0 || so.indexOf( "nux") >=0);
 
	}
}


Saludos. Smile

[Imagen: administradorq.png]
HTC Desire SLCD: S-OFF, cm7/r2 hboot, CyanogenMod Kernel, CyanogenMod NB 262
Samsung Galaxy S i9000: Chainfire Kernel (CF-ROOT), Value Pack ROM 2.3.6 JVU
SE Xperia x10i: Unlocked Bootloader, FXP052 Kernel, CyanogenMod 7.2.0 FXP052
Motorola Dext MB200: CyanogenMod 7.1 RC1
LG Optimus One P500: Stock ROM 2.3.3
ZTE Racer: Stock
09-11-2010 08:19 AM
WWW Buscar Citar
Mungu Sin conexión
Miembro
***

Mensajes: 4
Registro en: Sep 2010
Gracias dados: 0
Gracias recibidos: 0
Mensaje: #2
RE: Detectar Sistema Operativo
  • Compartir en Delicious
  • Compartir en Digg
  • Compartir en Linkedin
  • Compartir en MySpace
  • Compartir en Technorati
  • Compartir en Tuenti
Me engañaste por el titulo , pense que ibas a hablar de OS Fingerprinting, pero aún así el articulo es bastante útil, gracias de todos modos.

[Imagen: firmaminix.jpg]
10-11-2010 05:18 AM
Buscar Citar
-Gosw- Sin conexión
Administrador
*******

Mensajes: 1.984
Registro en: Jul 2010
Facebook Twitter YouTube
Gracias dados: 62
Gracias recibidos: 93
Mensaje: #3
RE: Detectar Sistema Operativo
  • Compartir en Delicious
  • Compartir en Digg
  • Compartir en Linkedin
  • Compartir en MySpace
  • Compartir en Technorati
  • Compartir en Tuenti
Sobre Fingerprinting puedo hablar mas adelante, la verdad que es una técnica bastante interesante y por demás compleja de implementar.

Pero vamos que cuando hable de Fingerprinting créeme que esa palabra estará en el titulo. XD

[Imagen: administradorq.png]
HTC Desire SLCD: S-OFF, cm7/r2 hboot, CyanogenMod Kernel, CyanogenMod NB 262
Samsung Galaxy S i9000: Chainfire Kernel (CF-ROOT), Value Pack ROM 2.3.6 JVU
SE Xperia x10i: Unlocked Bootloader, FXP052 Kernel, CyanogenMod 7.2.0 FXP052
Motorola Dext MB200: CyanogenMod 7.1 RC1
LG Optimus One P500: Stock ROM 2.3.3
ZTE Racer: Stock
10-11-2010 05:26 AM
WWW Buscar Citar




Usuario(s) navegando en este tema: 1 invitado(s)