Rufen Sie den aktuell angemeldeten Betriebssystembenutzer in Adobe Air ab

StackOverflow https://stackoverflow.com/questions/1376

  •  08-06-2019
  •  | 
  •  

Frage

Ich benötige den Namen des aktuell angemeldeten Benutzers in meiner Air/Flex-Anwendung.Die Anwendung wird nur auf Windows-Computern bereitgestellt.Ich denke, ich könnte dies erreichen, indem ich das Benutzerverzeichnis neu ausdrücke, bin aber auch für andere Möglichkeiten offen.

Keine korrekte Lösung

Andere Tipps

Es gibt ein paar kleine Aufräumarbeiten, die Sie durchführen können ...

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

Verwenden Sie, wie Kevin vorgeschlagen hat File.separator um die Verzeichnisaufteilung plattformübergreifend zu machen (gerade unter Windows und Mac OS X getestet).

Sie müssen es nicht verwenden resolvePath("") es sei denn, Sie suchen ein Kind.

Wenn Sie die Funktion außerdem zu einem richtigen Getter machen, ist eine Bindung ohne weitere Arbeit möglich.

Im obigen Beispiel habe ich es in a eingefügt UserUtil Klasse, jetzt kann ich mich daran binden UserUtil.currentOSUser, z.B:

<?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>

Außerdem würde ich Folgendes versuchen:

File.userDirectory.name

Aber ich habe kein Air installiert, daher kann ich das nicht wirklich testen ...

Dies ist nicht der schönste Ansatz, aber wenn Sie wissen, dass Ihre AIR-App nur in einer Windows-Umgebung ausgeführt wird, funktioniert sie ganz gut:

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

Hier ist eine Lösung, die unter XP/Vista funktioniert, aber auf jeden Fall auf OSX erweiterbar ist, Linux, mich würde noch eine andere Möglichkeit interessieren.

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

Update viel später:Es gibt tatsächlich eine integrierte Funktion, um den aktuellen Benutzer abzurufen.Ich denke, es liegt in nativeApplication.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top