Czy można uzyskać nazwę aktualnie zalogowanego użytkownika (Windows / Unix) i nazwę hosta maszyny?
Zakładam, że to tylko właściwość jakiejś statycznej klasy środowiska.
Znalazłem to dla nazwy użytkownika
com.sun.security.auth.module.NTSystem NTSystem = new
com.sun.security.auth.module.NTSystem();
System.out.println(NTSystem.getName());
a to dla nazwy maszyny:
import java.net.InetAddress;
...
String computerName;
...
try {
computerName = InetAddress.getLocalHost().getHostName();
}
catch(Exception ex) {
...
}
Czy pierwszy jest tylko dla systemu Windows?
A co zrobi druga, jeśli nie masz ustawionej nazwy hosta?
java
environment
Omar Kooheji
źródło
źródło
NTSystem
Klasa istnieje tylko naWindows
dystrybucji JDKOdpowiedzi:
Aby uzyskać aktualnie zalogowanego użytkownika:
i nazwa hosta maszyny:
źródło
System.getProperty("user.name");
działa zarówno w systemie Windows, jak i Linux?user.name
wartość można sfałszować , więc nie należy jej używać do uwierzytelniania.Aby uzyskać aktualnie zalogowanego użytkownika:
Aby uzyskać nazwę hosta maszyny:
Aby odpowiedzieć na ostatnią część pytania, Java API mówi, że funkcja getHostName () zwróci
źródło
Za pomocą
user.name
nie jest bezpieczne, ponieważ zmienne środowiskowe można sfałszować. Metoda, z której korzystałeś, jest dobra, istnieją również podobne metody dla systemu operacyjnego opartego na Uniksieźródło
Aby uzyskać ścieżkę aktualnie zalogowanego użytkownika:
źródło