Question

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 simplement 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?

Était-ce utile?

La solution

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());

Autres conseils

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, le L'API Java indique que getHostName () renverra

  

le nom d'hôte de 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.

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 également des méthodes similaires pour les systèmes d’exploitation sous Unix

Pour obtenir le chemin de l'utilisateur actuellement connecté:

System.getProperty("user.home");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top