Pobierz bieżący zalogowany użytkownik OS w Adobe Air

głosy
16

Potrzebuję nazwę bieżącego zalogowanego użytkownika w mojej aplikacji AIR / Flex. Aplikacja zostanie wdrożony tylko na komputerach z systemem Windows. Myślę, że mogę to osiągnąć przez regexing katalogu użytkownika, ale jestem otwarty na inne sposoby.

Utwórz 04/08/2008 o 17:05
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
10

Jest kilka małych porządki można zrobić ...

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

Jak sugeruje Kevin, należy File.separatordokonać łupania katalog cross-platform (testowane tylko na Windows i Mac OS X).

Nie trzeba używać resolvePath(""), chyba że szukasz dziecka.

Również, dzięki czemu funkcja właściwego getter umożliwia wiązanie bez dalszej pracy.

W powyższym przykładzie, umieścić go w UserUtilklasie teraz można wiązać UserUtil.currentOSUser, np:

<?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>
Odpowiedział 26/08/2008 o 14:32
źródło użytkownik

głosy
10

Również chciałbym spróbować:

File.userDirectory.name

Ale nie mam zainstalowany powietrza tak naprawdę nie mogę to sprawdzić ...

Odpowiedział 04/08/2008 o 17:39
źródło użytkownik

głosy
5

To nie jest najładniejszy podejście, ale jeśli znasz swoją aplikację AIR będzie działać tylko w środowisku Windows działa wystarczająco dobrze:

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);
}
Odpowiedział 17/02/2011 o 04:48
źródło użytkownik

głosy
2

Oto rozwiązanie, które działa w XP / Vista, ale jest zdecydowanie rozszerzalna do OSX, Linux, bym nadal być zainteresowany w inny sposób.

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;
}
Odpowiedział 04/08/2008 o 17:19
źródło użytkownik

głosy
-1

Aktualizacja sposób później: Jest rzeczywiście zbudowany w funkcji, aby uzyskać bieżącego użytkownika. Myślę, że to w NativeApplication.

Odpowiedział 06/01/2009 o 18:26
źródło użytkownik

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