Ist es möglich, den Namen des aktuell angemeldeten Benutzers (Windows / Unix) und den Hostnamen des Computers abzurufen?
Ich nehme an, es ist nur eine Eigenschaft einer statischen Umgebungsklasse.
Ich habe dies für den Benutzernamen gefunden
com.sun.security.auth.module.NTSystem NTSystem = new
com.sun.security.auth.module.NTSystem();
System.out.println(NTSystem.getName());
und dies für den Maschinennamen:
import java.net.InetAddress;
...
String computerName;
...
try {
computerName = InetAddress.getLocalHost().getHostName();
}
catch(Exception ex) {
...
}
Ist der erste nur für Windows?
Und was macht der zweite, wenn Sie keinen Hostnamen festgelegt haben?
java
environment
Omar Kooheji
quelle
quelle
NTSystem
Klasse existiert nur aufWindows
JDK-DistributionenAntworten:
So erhalten Sie den aktuell angemeldeten Benutzer:
und der Hostname des Computers:
quelle
System.getProperty("user.name");
sowohl unter Windows als auch unter Linux?user.name
Wert kann jedoch gefälscht werden , sodass er nicht zur Authentifizierung verwendet werden sollte.So erhalten Sie den aktuell angemeldeten Benutzer:
So erhalten Sie den Hostnamen des Computers:
Um den letzten Teil Ihrer Frage zu beantworten, gibt die Java-API an , dass getHostName () zurückgegeben wird
quelle
Die Verwendung
user.name
ist nicht sicher, da Umgebungsvariablen gefälscht werden können. Die von Ihnen verwendete Methode ist gut. Es gibt ähnliche Methoden auch für Unix-basierte Betriebssystemequelle
So rufen Sie den aktuell angemeldeten Benutzerpfad ab:
quelle