¿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) {
...
}
¿Es el primero solo para Windows?
¿Y qué hará el segundo si no tiene un nombre de host establecido?
java
environment
Omar Kooheji
fuente
fuente
NTSystem
clase solo existe enWindows
distribuciones JDKRespuestas:
Para obtener el usuario actualmente conectado:
y el nombre de host de la máquina:
fuente
System.getProperty("user.name");
Funciona tanto en Windows como en Linux?user.name
valor puede ser falsificado , por lo que no debe utilizarse para la autenticación.Para obtener el usuario actualmente conectado:
Para obtener el nombre de host de la máquina:
Para responder la última parte de su pregunta, la API de Java dice que getHostName () devolverá
fuente
El uso
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 Unixfuente
Para obtener la ruta de usuario actualmente conectada:
fuente