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

时间:2009-01-23 16:02:55

标签: java environment

是否可以获取当前登录用户的名称(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 个答案:

答案 0 :(得分:231)

获取当前登录的用户:

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

和机器的主机名:

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

答案 1 :(得分:84)

获取当前登录的用户:

System.getProperty("user.name");

获取机器的主机名:

InetAddress.getLocalHost().getHostName();

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

  

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

答案 2 :(得分:9)

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

答案 3 :(得分:0)

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

System.getProperty("user.home");
相关问题