Java текущее имя машины и вошедший в систему пользователь?
-
19-08-2019 - |
Вопрос
Можно ли получить имя текущего пользователя, вошедшего в систему (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?
А что будет делать второй, если у вас не установлено имя хоста?
Решение
Чтобы получить зарегистрированного пользователя:
System.getProperty("user.name"); //platform independent
и имя хоста машины:
java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost();
System.out.println("Hostname of local machine: " + localMachine.getHostName());
Другие советы
Чтобы получить зарегистрированного пользователя:
System.getProperty("user.name");
Чтобы получить имя хоста компьютера:
InetAddress.getLocalHost().getHostName();
Чтобы ответить на последнюю часть вашего вопроса, Java API говорит, что getHostName () вернет
имя хоста для этого IP-адреса или, если операция не разрешена проверкой безопасности, текстовое представление IP-адреса.
Использование user.name
небезопасно, поскольку переменные окружения могут быть подделаны. Метод, который вы использовали, хорош, есть аналогичные методы и для ОС на основе Unix
Чтобы получить текущий зарегистрированный путь пользователя:
System.getProperty("user.home");