Est-il possible d'obtenir le nom de l'utilisateur actuellement connecté (Windows / Unix) et le nom d'hôte de la machine?
Je suppose que c'est juste une propriété d'une classe d'environnement statique.
J'ai trouvé ceci pour le nom d'utilisateur
com.sun.security.auth.module.NTSystem NTSystem = new
com.sun.security.auth.module.NTSystem();
System.out.println(NTSystem.getName());
et ceci pour le nom de la machine:
import java.net.InetAddress;
...
String computerName;
...
try {
computerName = InetAddress.getLocalHost().getHostName();
}
catch(Exception ex) {
...
}
Le premier est-il uniquement pour Windows?
Et que fera le second, si vous n'avez pas défini de nom d'hôte?
java
environment
Omar Kooheji
la source
la source
NTSystem
classe n'existe que sur lesWindows
distributions JDKRéponses:
Pour obtenir l'utilisateur actuellement connecté:
et le nom d'hôte de la machine:
la source
System.getProperty("user.name");
à la fois sur Windows et Linux?user.name
valeur peut être falsifiée , elle ne doit donc pas être utilisée pour l'authentification.Pour obtenir l'utilisateur actuellement connecté:
Pour obtenir le nom d'hôte de la machine:
Pour répondre à la dernière partie de votre question, l' API Java indique que getHostName () retournera
la source
L'utilisation
user.name
n'est pas sécurisée car les variables d'environnement peuvent être truquées. La méthode que vous utilisiez est bonne, il existe également des méthodes similaires pour les systèmes d'exploitation basés sur unixla source
Pour obtenir le chemin de l'utilisateur actuellement connecté:
la source