2013-11-14 65 views
18

所以我想要做的是讓我的Java找到用戶的名稱,Windows登錄,所以當我說這樣一個方法時,它會返回用戶名稱,就像我在用戶名爲諾亞使用它, java會返回「Noah」,如果我在用戶Amanda上,Java會返回「Amanda」。我將如何做到這一點?如何在Java中獲取Windows用戶名?

+0

的可能的複製[當前Java的機器名和登錄的用戶?](http://stackoverflow.com/questions/473446/java運行-current-machine-name-and-logged-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

嘗試:

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和那裏的人作爲Windows服務運行時遇到用戶「SYSTEM」由System.getProperty返回(「user.name」)是有用的。 –

10

兩種方式

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

  2. System.getenv("USERNAME");

無論是良好的任何操作系統

0

NTSystem.getName()當應用程序在Windows服務運行還返回系統。有沒有辦法用NTSystem來獲取用戶名時,應用程序是在一個窗口服務

+0

如@Sanjiv Jivan上面說:System.getProperty(「user.name」)返回「SYSTEM」如果用戶登錄,而不是在調用時的時間當前登錄用戶之前啓動該服務。 NTSystem.getName()在調用時返回當前登錄的用戶名。本機方法是實現邏輯是特定於Windows和那裏的人作爲Windows服務運行時遇到用戶「SYSTEM」由System.getProperty返回(「user.name」)是有用的。 – GMLewisII

相關問題