एडोब एयर में ओएस उपयोगकर्ता में वर्तमान लॉग इन प्राप्त करें

मुझे अपने एयर / फ्लेक्स एप्लिकेशन में वर्तमान लॉग इन उपयोगकर्ता का नाम चाहिए। एप्लिकेशन केवल विंडोज मशीनों पर तैनात किया जाएगा। मुझे लगता है कि मैं उपयोगकर्ता निर्देशिका को regexing करके इसे प्राप्त कर सकता हूं, लेकिन अन्य तरीकों से खुला हूं।

0
जोड़ा
विचारों: 1

5 उत्तर

इसके अलावा मैं कोशिश करता हूँ:

File.userDirectory.name

लेकिन मेरे पास वायु स्थापित नहीं है इसलिए मैं वास्तव में इसका परीक्षण नहीं कर सकता ...

0
जोड़ा
विन 7 पर मेरे लिए काम करता है
जोड़ा लेखक Ilyssis, स्रोत
विंडोज एक्सपी पर पूरी तरह से ठीक काम करता है। क्या यह Vista, Windows 7 और iMac के लिए समान प्रदान करेगा?
जोड़ा लेखक midhunhk, स्रोत

यहां एक समाधान है जो XP / Vista में काम करता है, लेकिन निश्चित रूप से ओएसएक्स, लिनक्स के लिए विस्तार योग्य है, मैं अभी भी किसी अन्य तरीके से रूचि रखूंगा।

public static function GetCurrentOSUser():String{
    // XP & Vista only.
    var userDirectory:String = File.userDirectory.resolvePath("").nativePath;
    var startIndex:Number = userDirectory.lastIndexOf("\\") + 1
    var stopIndex:Number = userDirectory.length;
    var user = userDirectory.substring(startIndex, stopIndex);

    return user;
}
0
जोड़ा
लिनक्स पर काम करने के लिए file.separator के साथ "\\" को प्रतिस्थापित करना चाह सकता हूं।
जोड़ा लेखक Kevin, स्रोत

बाद में अपडेट करें: वर्तमान उपयोगकर्ता को प्राप्त करने के लिए वास्तव में एक अंतर्निहित फ़ंक्शन है। मुझे लगता है कि यह मूल अनुप्रयोग में है।

0
जोड़ा
मुझे वर्तमान उपयोगकर्ता भी प्राप्त करने की आवश्यकता है, लेकिन वह फ़ंक्शन नहीं मिल रहा है ... क्या आप समाधान साझा कर सकते हैं?
जोड़ा लेखक Cosma Colanicchia, स्रोत

कुछ छोटे सफाई हैं जो आप कर सकते हैं ...

package
{
    import flash.filesystem.File;

    public class UserUtil
    {
        public static function get currentOSUser():String
        {
            var userDir:String = File.userDirectory.nativePath;
            var userName:String = userDir.substr(userDir.lastIndexOf(File.separator) + 1);
            return userName;
        }
    }
}

जैसा कि केविन ने सुझाव दिया था, निर्देशिका को विभाजित करने के लिए File.separator का उपयोग करें (केवल विंडोज और मैक ओएस एक्स पर परीक्षण किया गया है)।

आपको resolPath ("") का उपयोग करने की आवश्यकता नहीं है जब तक कि आप किसी बच्चे की तलाश नहीं कर रहे हों।

साथ ही, फ़ंक्शन को एक उचित गेटर बनाने के बिना किसी और काम के बाध्यकारी की अनुमति देता है।

उपर्युक्त उदाहरण में मैंने इसे UserUtil क्लास में रखा है, अब मैं UserUtil.currentOSUser से जुड़ सकता हूं, उदाहरण के लिए:

<?xml version="1.0" encoding="utf-8"?>

     

0
जोड़ा

यह सबसे सुंदर दृष्टिकोण नहीं है, लेकिन अगर आपको पता है कि आपका एआईआर ऐप केवल विंडोज वातावरण में ही चलाया जाएगा तो यह काफी अच्छा काम करता है:

public var username:String;

public function getCurrentOSUser():void
{       
   var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();  
   var file:File = new File("C:/WINDOWS/system32/whoami.exe");
   nativeProcessStartupInfo.executable = file;

   process = new NativeProcess();       
   process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
   process.start(nativeProcessStartupInfo);
}

public function onOutputData(event:ProgressEvent):void
{           
   var output:String = process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable);
   this.username = output.split('\\')[1];
   trace("Got username: ", this.username);
}
0
जोड़ा