2013-11-14 11 views
18

Quindi quello che sto cercando di fare è lasciare che il mio Java trovi il nome utente con cui è loggato Windows, quindi quando direi un tale metodo, restituirebbe il nome dell'utente, come lo uso nell'Utente chiamato Noah, java avrebbe restituito "Noah" e se fossi stato l'utente Amanda, Java avrebbe restituito "Amanda". Come lo farei?Come ottenere il nome utente di Windows in Java?

+0

Possibile duplicato di [nome macchina Java attuale e utente connesso?] (Http://stackoverflow.com/questions/473446/java -current-machine-name-and-logged-in-user) – user3004449

risposta

42

Cercare la proprietà di sistema "user.name".

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

Dimostrazione: Main.java

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

uscita:

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

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

c:\dev\src\misc> 
+5

Ecco come devono essere le risposte. Questo ha risolto il mio problema attuale, e mi ha insegnato degli extra come bonus. – KjetilNordin

13

provare:

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

o

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

Mi piace questa risposta perché quando alcune app Java vengono eseguite come servizio Windows, System.getProperty ("user.name") restituisce "SYSTEM" se il servizio è stato avviato prima che l'utente abbia eseguito l'accesso e non l'utente attualmente registrato al momento della chiamata è fatto. NTSystem.getName() restituisce il nome utente attualmente registrato al momento della chiamata. Il metodo nativo è utile nell'implementazione della logica specifica di Windows e in cui le persone eseguono l'utente "SYSTEM" restituito da System.getProperty ("user.name") quando è in esecuzione come servizio Windows. –

10

Due modi

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

  2. System.getenv("USERNAME");

Entrambi sono buoni per qualsiasi sistema operativo

0

NTSystem.getName() restituisce anche il sistema quando l'applicazione viene eseguito su un servizio di Windows. Non c'è modo di ottenere il nome utente con NTSystem quando l'app è in esecuzione su un servizio Windows

+0

come @Sanjiv Jivan ha detto in precedenza: System.getProperty ("user.name") restituisce "SYSTEM" se il servizio è stato avviato prima che l'utente abbia effettuato l'accesso e non l'utente attualmente registrato al momento della chiamata. NTSystem.getName() restituisce il nome utente attualmente registrato al momento della chiamata. Il metodo nativo è utile nell'implementazione della logica specifica di Windows e in cui le persone eseguono l'utente "SYSTEM" restituito da System.getProperty ("user.name") quando è in esecuzione come servizio Windows. – GMLewisII