Pergunta

É possível obter o nome do usuário conectado no momento (Windows / Unix) eo nome da máquina?

Eu suponho que é apenas uma propriedade de alguma classe ambiente estático.

Eu encontrei este 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 faz, se você não tem um conjunto hostname?

Foi útil?

Solução

Para obter o usuário conectado no momento:

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

e o nome da máquina:

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

Outras dicas

Para obter o usuário conectado no momento:

System.getProperty("user.name");

Para obter o nome do host da máquina:

InetAddress.getLocalHost().getHostName();

Para responder à última parte da sua pergunta, a API Java diz que getHostName () irá retornar

o nome do host para este endereço de IP, ou se a operação não é permitida pela verificação de segurança, a representação textual do endereço IP.

Usando user.name não é seguro como variáveis ??de ambiente pode ser falsificado. Método que você estava usando é bom, existem métodos semelhantes para OS baseado em UNIX, bem

Para obter o logado no caminho do usuário:

System.getProperty("user.home");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top