Java текущее имя машины и вошедший в систему пользователь? - PullRequest
138 голосов
/ 23 января 2009

Можно ли получить имя текущего пользователя (Windows / Unix) и имя хоста машины?

Я предполагаю, что это просто свойство некоторого класса статической среды.

Я нашел это для имени пользователя

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

и это для имени машины:

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

catch(Exception ex) {
    ...
}

Первый только для Windows?

А что будет делать второй, если у вас не установлено имя хоста?

Ответы [ 4 ]

231 голосов
/ 23 января 2009

Чтобы получить зарегистрированного пользователя:

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

и имя хоста машины:

java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost();
System.out.println("Hostname of local machine: " + localMachine.getHostName());
84 голосов
/ 23 января 2009

Чтобы получить зарегистрированного пользователя:

System.getProperty("user.name");

Чтобы получить имя хоста машины:

InetAddress.getLocalHost().getHostName();

Чтобы ответить на последнюю часть вашего вопроса, Java API сообщает, что getHostName () вернет

имя хоста для этого IP-адреса или, если операция не разрешена проверкой безопасности, текстовое представление IP-адреса.

9 голосов
/ 24 сентября 2012

Использование user.name небезопасно, поскольку переменные окружения могут быть подделаны. Метод, который вы использовали, хорош, есть аналогичные методы и для ОС на основе Unix

0 голосов
/ 27 октября 2017

Чтобы получить текущий зарегистрированный путь пользователя:

System.getProperty("user.home");
...