Java当前的机器名称和login用户?

是否有可能获得当前login的用户(Windows / Unix)的名称和机器的主机名?

我认为这只是一些静态环境类的属性。

我已经find了这个用户名

com.sun.security.auth.module.NTSystem NTSystem = new com.sun.security.auth.module.NTSystem(); System.out.println(NTSystem.getName()); 

这对于机器名称:

 import java.net.InetAddress; ... String computerName; ... try { computerName = InetAddress.getLocalHost().getHostName(); } catch(Exception ex) { ... } 

是第一个仅用于Windows?

如果你没有设置主机名,第二个会做什么?

要获取当前login的用户:

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

和机器的主机名称:

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

要获取当前login的用户:

 System.getProperty("user.name"); 

要获取机器的主机名称:

 InetAddress.getLocalHost().getHostName(); 

要回答你的问题的最后部分, Java API说getHostName()将会返回

该IP地址的主机名,或者安全检查不允许的操作,IP地址的文本表示。

使用user.name不安全,因为环境variables可能是伪造的。 你使用的方法是好的,对于基于Unix的操作系统也有类似的方法

要获取当前login的用户path:

 System.getProperty("user.home");