Kom i dagens logget inn OS bruker i Adobe Air

stemmer
16

Jeg trenger navnet på den gjeldende påloggede brukeren i min Air / Flex søknad. Søknaden vil bare bli utplassert på Windows-maskiner. Jeg tror jeg kunne oppnå dette ved regexing brukerkatalogen, men er åpen for andre måter.

Publisert på 04/08/2008 klokken 16:05
kilden bruker
På andre språk...                            


5 svar

stemmer
10

Det er et par små opprydding du kan gjøre ...

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

Som Kevin foreslått, kan du bruke File.separatortil å lage katalogen splitting kryssplattform (bare testet på Windows og Mac OS X).

Du trenger ikke å bruke resolvePath("")med mindre du leter etter et barn.

Dessuten gjør den funksjon en riktig getter-muliggjør binding uten noe ytterligere arbeide.

I eksempelet ovenfor satte jeg det inn i en UserUtilklasse, nå kan jeg binde seg til UserUtil.currentOSUser, for eksempel:

<?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>
Svarte 26/08/2008 kl. 13:32
kilden bruker

stemmer
10

Også jeg ville prøve:

File.userDirectory.name

Men jeg har ikke Air installert, så jeg kan egentlig ikke teste dette ...

Svarte 04/08/2008 kl. 16:39
kilden bruker

stemmer
5

Dette er ikke den peneste tilnærming, men hvis du vet at AIR app vil bare kjøres i et Windows-miljø det fungerer godt nok:

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);
}
Svarte 17/02/2011 kl. 03:48
kilden bruker

stemmer
2

Her er en løsning som fungerer i XP / Vista, men er definitivt utvides til OSX, Linux, ville jeg fortsatt være interessert i en annen måte.

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;
}
Svarte 04/08/2008 kl. 16:19
kilden bruker

stemmer
-1

Oppdater måte senere: det er faktisk en innebygd funksjon for å få den aktuelle brukeren. Jeg tror det er i nativeApplication.

Svarte 06/01/2009 kl. 17:26
kilden bruker

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