Можно ли получить имя вошедшего в систему пользователя (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?
И что будет делать второй, если у вас не установлено имя хоста?
java
environment
Омар Кохеджи
источник
источник
NTSystem
Класс существует только наWindows
распределениях JDKОтветы:
Чтобы получить зарегистрированного пользователя:
и имя хоста машины:
источник
System.getProperty("user.name");
на Windows и Linux?user.name
значение может быть подделано , поэтому его не следует использовать для аутентификации.Чтобы получить зарегистрированного пользователя:
Чтобы получить имя хоста машины:
Чтобы ответить на последнюю часть вашего вопроса, Java API говорит, что getHostName () вернет
источник
Использование
user.name
небезопасно, поскольку переменные окружения могут быть сфальсифицированы. Метод, который вы использовали, хорош, есть аналогичные методы и для ОС на основе Unixисточник
Чтобы получить текущий зарегистрированный путь пользователя:
источник