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?
risposta
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>
Ecco come devono essere le risposte. Questo ha risolto il mio problema attuale, e mi ha insegnato degli extra come bonus. – KjetilNordin
provare:
String userName = System.getProperty("user.name");
o
String userName = new com.sun.security.auth.module.NTSystem().getName()
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. –
Due modi
System.getProperty("user.name");
System.getenv("USERNAME");
Entrambi sono buoni per qualsiasi sistema operativo
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
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
Possibile duplicato di [nome macchina Java attuale e utente connesso?] (Http://stackoverflow.com/questions/473446/java -current-machine-name-and-logged-in-user) – user3004449