168

是否可以获得当前登录用户的名称(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吗?

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

4

4 回答 4

271

获取当前登录的用户:

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

和机器的主机名:

java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost();
System.out.println("Hostname of local machine: " + localMachine.getHostName());
于 2009-01-23T16:08:23.220 回答
100

获取当前登录的用户:

System.getProperty("user.name");

获取机器的主机名:

InetAddress.getLocalHost().getHostName();

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

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

于 2009-01-23T16:28:48.747 回答
11

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

于 2012-09-24T12:58:10.647 回答
2

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

System.getProperty("user.home");
于 2017-10-27T12:03:29.970 回答