Pregunta

¿Es posible obtener el nombre del usuario actualmente conectado (Windows / Unix) y el nombre de host de la máquina?

Supongo que es solo una propiedad de alguna clase de entorno estático.

He encontrado esto para el nombre de usuario

com.sun.security.auth.module.NTSystem NTSystem = new
        com.sun.security.auth.module.NTSystem();
System.out.println(NTSystem.getName());

y esto para el nombre de la máquina:

import java.net.InetAddress;
...
String computerName;
...
try {
    computerName = InetAddress.getLocalHost().getHostName();
}

catch(Exception ex) {
    ...
}

¿El primero es solo para Windows?

¿Y qué hará el segundo, si no tiene un nombre de host configurado?

¿Fue útil?

Solución

Para obtener el usuario actualmente conectado:

System.getProperty("user.name"); //platform independent 

y el nombre de host de la máquina:

java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost();
System.out.println("Hostname of local machine: " + localMachine.getHostName());

Otros consejos

Para obtener el usuario actualmente conectado:

System.getProperty("user.name");

Para obtener el nombre de host de la máquina:

InetAddress.getLocalHost().getHostName();

Para responder la última parte de su pregunta, el API de Java dice que getHostName () devolverá

  

el nombre de host para esta dirección IP, o si la operación no está permitida por la verificación de seguridad, la representación textual de la dirección IP.

El uso de user.name no es seguro ya que las variables de entorno pueden ser falsificadas. El método que estaba utilizando es bueno, también hay métodos similares para sistemas operativos basados ??en Unix

Para obtener la ruta de usuario actualmente conectada:

System.getProperty("user.home");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top