web-dev-qa-db-fra.com

Nom actuel de la machine Java et utilisateur connecté?

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 juste pour Windows?

Et que fera le second, si vous n'avez pas défini de nom d'hôte?

134
Omar Kooheji

Pour obtenir l'utilisateur actuellement connecté:

System.getProperty("user.name"); //platform independent 

et le nom d'hôte de la machine:

Java.net.InetAddress localMachine = Java.net.InetAddress.getLocalHost();
System.out.println("Hostname of local machine: " + localMachine.getHostName());
226
cordellcp3

Pour obtenir l'utilisateur actuellement connecté:

System.getProperty("user.name");

Pour obtenir le nom d'hôte de la machine:

InetAddress.getLocalHost().getHostName();

Pour répondre à la dernière partie de votre question, la API Java indique que getHostName () renverra

nom d'hôte pour cette adresse IP ou, si l'opération n'est pas autorisée par le contrôle de sécurité, la représentation textuelle de l'adresse IP.

84
Bill the Lizard

L'utilisation de user.name n'est pas sécurisée, car les variables d'environnement peuvent être falsifiées. La méthode que vous utilisiez est bonne, il existe des méthodes similaires pour les systèmes d'exploitation Unix

9
phoenix

Pour obtenir le chemin d'utilisateur actuellement connecté:

System.getProperty("user.home");
0
Swapnil1156035