É possível obter o nome do usuário atualmente conectado (Windows / Unix) e o nome do host da máquina?
Presumo que seja apenas uma propriedade de alguma classe de ambiente estático.
Encontrei isso para o nome de usuário
com.sun.security.auth.module.NTSystem NTSystem = new
com.sun.security.auth.module.NTSystem();
System.out.println(NTSystem.getName());
e isso para o nome da máquina:
import java.net.InetAddress;
...
String computerName;
...
try {
computerName = InetAddress.getLocalHost().getHostName();
}
catch(Exception ex) {
...
}
O primeiro é apenas para Windows?
E o que o segundo fará, se você não tiver um nome de host definido?
java
environment
Omar Kooheji
fonte
fonte
NTSystem
classe existe apenas emWindows
distribuições JDKRespostas:
Para obter o usuário conectado no momento:
e o nome do host da máquina:
fonte
System.getProperty("user.name");
em janelas e linux?user.name
valor pode ser falsificado , portanto, não deve ser usado para autenticação.Para obter o usuário conectado no momento:
Para obter o nome do host da máquina:
Para responder à última parte da sua pergunta, a API Java diz que getHostName () retornará
fonte
O uso
user.name
não é seguro, pois as variáveis de ambiente podem ser falsificadas. O método que você estava usando é bom, existem métodos semelhantes para sistemas operacionais baseados em unix tambémfonte
Para obter o caminho do usuário atualmente conectado:
fonte