2013-11-14 10 views
18

Итак, что я пытаюсь сделать, это позволить моей Java найти имя пользователя, с которым подключены Windows, поэтому, когда я скажу такой метод, он вернет имя пользователя, например, я использую его в User под именем Noah, java вернет «Noah», и если бы я был на пользователе Аманда, Java вернет «Аманду». Как мне это сделать?Как получить имя пользователя Windows в Java?

+0

Возможный дубликат [Текущее имя машины и зарегистрированный пользователь?] (Http://stackoverflow.com/questions/473446/java -current-machine-name-and-log-in-user) – user3004449

ответ

42

Посмотрите на системное свойство "user.name".

String username = System.getProperty("user.name"); 

Демонстрация: Main.java

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

Выход:

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

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

c:\dev\src\misc> 
+5

Вот как должны быть ответы. Это фиксировало мою текущую проблему, и я научил меня дополнительным услугам в качестве бонуса. – KjetilNordin

13

Try:

String userName = System.getProperty("user.name"); 

или

String userName = new com.sun.security.auth.module.NTSystem().getName() 
+4

Мне нравится этот ответ, потому что, когда некоторые приложения Java работают в качестве службы Windows, System.getProperty («user.name») возвращает «SYSTEM», если служба запускается до входа пользователя в систему, а не текущего пользователя во время вызова сделан. NTSystem.getName() возвращает имя пользователя, зарегистрированное в настоящий момент, во время вызова. Нативный метод полезен при реализации логики, специфичной для Windows, и когда люди запускают пользователя «SYSTEM», возвращаемого System.getProperty («user.name») при работе в качестве службы Windows. –

10

Два способа

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

  2. System.getenv("USERNAME");

Оба хороши для любой ОС

0

NTSystem.getName() также возвращает систему, когда приложение работает на Windows Service. Нет способа получить имя пользователя с помощью NTSystem, когда приложение работает в службе Windows.

+0

как @Sanjiv Jivan сказал выше: System.getProperty («user.name») возвращает «SYSTEM», если служба запускается до входа пользователя в систему, а не текущего пользователя в момент вызова. NTSystem.getName() возвращает имя пользователя, зарегистрированное в настоящий момент, во время вызова. Нативный метод полезен при реализации логики, специфичной для Windows, и когда люди запускают пользователя «SYSTEM», возвращаемого System.getProperty («user.name») при работе в качестве службы Windows. – GMLewisII

Смежные вопросы