Java 当前机器名称和登录用户?

是否可以得到当前登录用户的名称(Windows/Unix)和机器的主机名?

我假设它只是某个静态环境类的属性。

我找到了这个用户名

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 设计的吗?

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

201861 次浏览

要获取当前登录的用户:

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

以及机器的主机名:

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

要获取当前登录的用户:

System.getProperty("user.name");

要获取机器的主机名:

InetAddress.getLocalHost().getHostName();

为了回答问题的最后一部分,Java API表示 getHostName ()将返回

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

使用 user.name是不安全的,因为环境变量可以伪造。你使用的方法很好,基于 unix 的操作系统也有类似的方法

要获取当前登录的用户路径:

System.getProperty("user.home");