2013-11-14 18 views
18

Staram się więc, aby moja Java znalazła nazwę użytkownika, z którym jest zalogowany system Windows, więc gdybym powiedział taką metodę, zwróciłaby ona nazwę użytkownika, tak jak ja używam go w nazwie użytkownika Noah, java zwróci "Noah" i gdybym był użytkownikiem Amandy, Java zwróciłaby "Amandę". Jak to zrobić?Jak uzyskać nazwę użytkownika Windows w Javie?

+0

Prawdopodobny duplikat [nazwa aktualnej maszyny Java i zalogowany użytkownik?] (Http://stackoverflow.com/questions/473446/java -aktualny-nazwa-maszyny-i-zalogowany-użytkownika) – user3004449

Odpowiedz

42

Wyszukaj właściwość systemową "user.name".

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

Demonstracja: Main.java

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

wyjściowa:

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

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

c:\dev\src\misc> 
+5

Tak powinny być odpowiedzi. To naprawiło mój obecny problem, i nauczyłem mnie dodatków jako bonusu. – KjetilNordin

13

Spróbuj:

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

lub

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

Podoba mi się ta odpowiedź, ponieważ gdy niektóre aplikacje java działają jako usługa Windows, System.getProperty ("nazwa użytkownika") zwraca "SYSTEM", jeśli usługa została uruchomiona przed zalogowaniem się użytkownika, a nie aktualnie zalogowanym użytkownikiem w momencie wywołania jest zrobione. NTSystem.getName() zwraca aktualnie zalogowaną nazwę użytkownika podczas rozmowy. Natywna metoda jest przydatna w implementacji logiki, która jest specyficzna dla systemu Windows i gdzie użytkownicy uruchamiają użytkownika "SYSTEM" zwrócony przez System.getProperty ("user.name") podczas działania jako usługa systemu Windows. –

10

Dwa sposoby

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

  2. System.getenv("USERNAME");

Oba są dobre dla każdego systemu operacyjnego

0

NTSystem.getName() zwraca również system, gdy aplikacja działa na usługi windows. Nie ma sposobu na uzyskanie nazwy użytkownika za pomocą NTSystem, gdy aplikacja działa w usłudze Windows

+0

jako @Sanjiv Jivan powiedział powyżej: System.getProperty ("user.name") zwraca "SYSTEM", jeśli usługa została uruchomiona przed zalogowaniem użytkownika, a nie aktualnie zalogowanym użytkownikiem w momencie wywołania. NTSystem.getName() zwraca aktualnie zalogowaną nazwę użytkownika podczas rozmowy. Natywna metoda jest przydatna w implementacji logiki, która jest specyficzna dla systemu Windows i gdzie użytkownicy uruchamiają użytkownika "SYSTEM" zwrócony przez System.getProperty ("user.name") podczas działania jako usługa systemu Windows. – GMLewisII