2009-01-23 16 views
122

क्या वर्तमान में लॉग इन उपयोगकर्ता (विंडोज़/यूनिक्स) और मशीन का होस्टनाम नाम प्राप्त करना संभव है?जावा वर्तमान मशीन का नाम और उपयोगकर्ता में लॉग इन?

मुझे लगता है कि यह सिर्फ कुछ स्थिर पर्यावरण वर्ग की संपत्ति है।

import java.net.InetAddress; 
... 
String computerName; 
... 
try { 
    computerName = InetAddress.getLocalHost().getHostName(); 
} 

catch(Exception ex) { 
    ... 
} 

सिर्फ विंडोज के लिए पहले एक है:

मैं उपयोगकर्ता नाम

com.sun.security.auth.module.NTSystem NTSystem = new 
     com.sun.security.auth.module.NTSystem(); 
System.out.println(NTSystem.getName()); 

और इस मशीन नाम के लिए के लिए यह मिल गया है?

और यदि आपके पास होस्टनाम सेट नहीं है तो दूसरा क्या होगा?

+0

'NTSystem' वर्ग केवल' पर Windows' JDK वितरण – BullyWiiPlaza

उत्तर

212

वर्तमान में उपयोगकर्ता के प्रवेश करने के लिए:

System.getProperty("user.name"); //platform independent 

और मशीन के होस्टनाम:

java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost(); 
System.out.println("Hostname of local machine: " + localMachine.getHostName()); 
+1

मौजूद है क्या 'System.getProperty ("user.name") है; 'विंडोज़ और लिनक्स दोनों पर काम करते हैं? – Catfish

+0

लिनक्स –

+5

में मेरे लिए काम किया है, हालांकि, 'user.name' मान [स्पूफ किया जा सकता है] (http://stackoverflow.com/a/27899761/545127), इसलिए इसे प्रमाणीकरण के लिए उपयोग नहीं किया जाना चाहिए। – Raedwald

77

वर्तमान में उपयोगकर्ता के प्रवेश करने के लिए:

System.getProperty("user.name"); 

प्राप्त करने के लिए मशीन का होस्ट नाम:

InetAddress.getLocalHost().getHostName(); 

अपने प्रश्न के अंतिम भाग का जवाब करने के लिए, Java API का कहना है कि getHostName()

इस आईपी पते के लिए होस्ट नाम, या ऑपरेशन सुरक्षा जांच से अनुमति नहीं है अगर, शाब्दिक वापस आ जाएगी आईपी ​​पते का प्रतिनिधित्व।

+0

सभी ओपी मूल प्रश्नों का उत्तर देने के लिए उपरोक्त एक स्पष्ट और संक्षेप में। निश्चित रूप से यह स्वीकार्य उत्तर – Andy

+0

सर होना चाहिए, जावा एपीआई लिंक अमान्य है। कृपया अद्यतन करें। –

+1

धन्यवाद @ एनीनेट। मेरा अद्यतन उत्तर देखें। –

9

user.name का उपयोग सुरक्षित नहीं है क्योंकि पर्यावरण चर को फिक्र किया जा सकता है। विधि आप उपयोग कर रहे थे अच्छा है, वहाँ यूनिक्स आधारित ओएस के लिए इसी तरह के तरीके के रूप में अच्छी तरह से

+0

तो यह सिर्फ विंडोज़ के लिए _is_ है? क्या ऐसा करने के लिए _platform स्वतंत्र_ तरीका है? –

+6

सिस्टम गुण पर्यावरण चर नहीं हैं। पर्यावरण चर के लिए System.getenv ("USER") का उपयोग करें। System.properties को जावा-कमांडलाइन पर उपयोगकर्ता द्वारा जावा-डूसर.नाम = किसी भी व्यक्ति के साथ अभी भी सेट किया जा सकता है, इसलिए अभी भी –

+0

सुरक्षित नहीं है "यूनिक्स आधारित ओएस के लिए भी इसी तरह के तरीके हैं": धन्यवाद, मैं किसके लिए देख रहा था। तो इन ओएस के लिए विधि क्या है? मेरे शोध, वर्तमान में मुझे आयोजित किया ... यहाँ :) "व्हामी" का उपयोग कर? – pdem

0

वर्तमान में उपयोगकर्ता पथ में लॉग इन करने के लिए कर रहे हैं:

System.getProperty("user.home");