如何在Java中获取Windows用户名?

Noa*_*gle 27 java windows username

所以我想要做的就是让我的Java找到Windows登录的用户名,所以当我说这样的方法时,它会返回用户名,就像我在用户名叫Noah中使用它一样,java会返回"Noah",如果我在用户Amanda上,Java将返回"Amanda".我该怎么做?

rge*_*man 55

查找系统属性"user.name".

String username = System.getProperty("user.name");
Run Code Online (Sandbox Code Playgroud)

演示: Main.java

public class Main {
   public static void main(String[] args) {
      System.out.println(System.getProperty("user.name"));
   }
}
Run Code Online (Sandbox Code Playgroud)

输出:

c:\dev\src\misc>javac Main.java

c:\dev\src\misc>java Main
rgettman

c:\dev\src\misc>
Run Code Online (Sandbox Code Playgroud)

  • 答案应该是这样的.这解决了我当前的问题,_and_教我额外的奖励. (9认同)

use*_*339 17

尝试:

String userName = System.getProperty("user.name");
Run Code Online (Sandbox Code Playgroud)

要么

String userName = new com.sun.security.auth.module.NTSystem().getName()
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个响应,因为当一些Java应用程序作为Windows服务运行时,如果服务在用户登录之前启动,则System.getProperty("user.name")返回"SYSTEM",而不是当前登录的用户在调用时返回制作.NTSystem.getName()在调用时返回当前记录的用户名.本机方法在实现特定于Windows的逻辑以及人们在作为Windows服务运行时遇到由System.getProperty("user.name")返回的用户"SYSTEM"时非常有用. (6认同)

Evg*_*eev 15

两种方式

  1. System.getProperty("user.name");

  2. System.getenv("USERNAME");

两者都适用于任何操作系统