Java текущее имя машины и вошедший в систему пользователь?

StackOverflow https://stackoverflow.com/questions/473446

  •  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");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top