Lesen Sie die aktuelle in OS-Benutzer in Adobe Air angemeldet

stimmen
16

Ich brauche den Namen der angemeldeten aktuellen Benutzer in meiner Air / Flex-Anwendung. Die Anwendung wird nur auf Windows-Rechnern eingesetzt werden. Ich glaube, ich dies durch regexing das Benutzerverzeichnis erreichen könnte, aber ich bin offen für andere Möglichkeiten.

Veröffentlicht am 04/08/2008 um 17:05
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
10

Es gibt ein paar kleine Bereinigungen können Sie machen ...

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

Als Kevin vorgeschlagen, verwenden Sie File.separatordas Verzeichnis Splitting Cross-Plattform (nur getestet auf Windows und Mac OS X) zu machen.

Sie brauchen nicht zu verwenden , resolvePath("")wenn Sie für ein Kind suchen.

Auch ein geeignetes Getter der Funktion zu machen ermöglicht, ohne weitere Arbeit zu binden.

Im obigen Beispiel habe ich es in eine UserUtilKlasse, jetzt kann ich binden UserUtil.currentOSUser, zum Beispiel:

<?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>
Beantwortet am 26/08/2008 um 14:32
quelle vom benutzer

stimmen
10

Auch würde ich versuchen:

File.userDirectory.name

Aber ich habe nicht Air installiert, so kann ich nicht wirklich dies testen ...

Beantwortet am 04/08/2008 um 17:39
quelle vom benutzer

stimmen
5

Dies ist nicht der schönste Ansatz, aber wenn Sie Ihre AIR-Anwendung kennen nur in einer Windows-Umgebung ausgeführt werden, es funktioniert gut genug:

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);
}
Beantwortet am 17/02/2011 um 04:48
quelle vom benutzer

stimmen
2

Hier ist eine Lösung, die in XP / Vista funktioniert, aber ist auf jeden Fall erweiterbar auf OSX, Linux, würde ich immer noch auf eine andere Weise interessiert.

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;
}
Beantwortet am 04/08/2008 um 17:19
quelle vom benutzer

stimmen
-1

Update Weg später: es gibt tatsächlich eine integrierte Funktion den aktuellen Benutzer zu erhalten. Ich denke, es ist in Native.

Beantwortet am 06/01/2009 um 18:26
quelle vom benutzer

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