Získat aktuální přihlášeného uživatele operačního systému v prostředí Adobe AIR

hlasů
16

Musím jméno právě přihlášeného uživatele v mé žádosti Air / Flex. Aplikace budou nasazeny pouze na počítačích se systémem Windows. Myslím, že bych mohl dosáhnout tím, že regexing adresář uživatele, ale jsem otevřený jinými způsoby.

Položena 04/08/2008 v 17:05
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
10

Je tu několik malých pročištění můžete udělat ...

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

Kevin navrhl použít File.separator, aby se adresář štípací platformě (právě testován v systému Windows a Mac OS X).

Nemusíte používat resolvePath(""), pokud hledáte pro dítě vás.

Také, aby se funkce správné getr umožňuje vázání bez další práci.

Ve výše uvedeném příkladu jsem dát do UserUtiltřídy, teď se může vázat UserUtil.currentOSUser, např:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Label text="{UserUtil.currentOSUser}"/> 
</mx:WindowedApplication>
Odpovězeno 26/08/2008 v 14:32
zdroj uživatelem

hlasů
10

Také bych zkusit:

File.userDirectory.name

Ale nemám Air instalovány tak, nemůžu vyzkoušet ...

Odpovězeno 04/08/2008 v 17:39
zdroj uživatelem

hlasů
5

To není nejhezčí přístup, ale pokud víte, že vaše aplikace AIR aplikace budou probíhat pouze v prostředí Windows funguje docela dobře:

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);
}
Odpovězeno 17/02/2011 v 04:48
zdroj uživatelem

hlasů
2

Zde je řešení, které funguje na XP / Vista, ale je rozhodně rozšiřitelná na OSX, Linux, tak bych ještě mít zájem jiným způsobem.

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;
}
Odpovězeno 04/08/2008 v 17:19
zdroj uživatelem

hlasů
-1

Aktualizace způsob později: je to vlastně zabudovanou funkci získat aktuální uživatel. Myslím, že je v NativeApplication.

Odpovězeno 06/01/2009 v 18:26
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more