Vă mulțumim pentru susținere

Obțineți utilizatorul curent conectat la sistemul de operare în Adobe Air

Am nevoie de numele utilizatorului curent conectat în aplicația mea Air / Flex. Aplicația va fi implementată numai pe mașinile Windows. Cred că aș putea realiza acest lucru prin regexarea directorului de utilizatori, dar sunt deschis și altor moduri.

0
adăugat

5 răspunsuri

De asemenea, aș încerca:

File.userDirectory.name

Dar nu am instalat Air, deci nu pot sa testez asta ...

0
adăugat
Lucrează pentru mine pe Win 7
adăugat autor Ilyssis
Funcționează perfect pe Windows XP. Va asigura acelasi lucru pentru Vista, Windows 7 si iMac?
adăugat autor midhunhk

Aici este o soluție care funcționează în XP / Vista, dar este cu siguranță extensibilă la OSX, linux, aș fi în continuare interesat într-un alt mod.

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
adăugat
Poate doriți să înlocuiți "\\" cu File.separator pentru ca acesta să funcționeze pe linux.
adăugat autor Kevin

Actualizați modul mai târziu: de fapt, există o funcție integrată pentru a obține utilizatorul curent. Cred că este în Aplicație nativă.

0
adăugat
Trebuie să-l primesc și pe actualul utilizator, dar nu pot găsi acea funcție ... puteți împărți soluția?
adăugat autor Cosma Colanicchia
adăugat autor merlinc

Există câteva curățări mici pe care le puteți face ...

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;
        }
    }
}

Așa cum a sugerat Kevin, folosiți File.separator pentru a face directorul să împartă platforma (doar testată pe Windows și Mac OS X).

Nu trebuie să utilizați resolvePath ("") decât dacă căutați un copil.

De asemenea, realizarea funcției de obținere adecvată permite legarea fără alte lucrări.

În exemplul de mai sus am introdus-o într-o clasă UserUtil , acum pot lega la UserUtil.currentOSUser , de exemplu:



     

0
adăugat

Aceasta nu este cea mai frumoasă abordare, dar dacă știți că aplicația dvs. AIR va fi rulată într-un mediu Windows, funcționează destul de bine:

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
adăugat